ææ°ã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã®å€ãã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã«åºã¥ããŠããŸãã 2013幎11æã®TOP500ã«ãã2ã€ã®æéã·ã¹ãã ãå«ãŸããŸãã ã¢ã¯ã»ã©ã¬ãŒã¿ã¯éåžžã®PCã§ãé
åžãããŠãããããŒã¿ãã«ããã€ã¹ã«ã衚瀺ãããŸããããã¯ãã¢ã¯ã»ã©ã¬ãŒã¿ããã°ã©ãã³ã°ãžã®é¢å¿ã®é«ãŸãã«ããã«è²¢ç®ããŠããŸãã
å éåšã®ãã®ãããªåºç¯ãªäœ¿çšã¯ãé«æ§èœããšãã«ã®ãŒå¹çãäœã³ã¹ãã®çµæã§ãã ããšãã°ãXeon E5-2687Wãš2012幎3æã«ãªãªãŒã¹ãããGTX 680ãæ¯èŒãããšãGTX 680ã4åå®ããå粟床æŒç®ã®ããã©ãŒãã³ã¹ã8åãã¡ã¢ãªåž¯åå¹
ã4åã§ããããšãããããŸãããã«æç®ã§30å以äžã®ããã©ãŒãã³ã¹ãã¯ããããã6åã®ããã©ãŒãã³ã¹ã ãããã®æ¯èŒçµæã«åºã¥ããŠãå éåšã¯ã©ãã§ãåžžã«äœ¿çšããå¿
èŠããããŸãã ãªããããèµ·ãããªãã®ã§ããïŒ
äž»ã«2ã€ã®å°é£ããããŸãã 第äžã«ãã¢ã¯ã»ã©ã¬ãŒã¿ã¯ç¹å®ã®ã¯ã©ã¹ã®ããã°ã©ã ãç¹ã«ååãªäžŠè¡æ§ãããŒã¿ã®åå©çšãå¶åŸ¡ãããŒã®é£ç¶æ§ãã¡ã¢ãªã¢ã¯ã»ã¹æ§é ãæã€ããã°ã©ã ã®ã¿ãå¹ççã«å®è¡ã§ããŸãã 第äºã«ãéåžžã«å€§ããªäžŠåæ§ããªãŒãã³ãªã¡ã¢ãªéå±€ïŒããŒããŠã§ã¢ãã£ãã·ã¥ãªãïŒãå®è¡æé ã®å³æ Œããã¡ã¢ãªã¢ã¯ã»ã¹æäœã®ããŒãžãªã©ã®ã¢ãŒããã¯ãã£ã®éãã«ãããéåžžã®CPUãããã¢ã¯ã»ã©ã¬ãŒã¿çšã®å¹ççãªããã°ã©ã ãäœæããããšã¯å°é£ã§ãã ãããã£ãŠããããã®åŽé¢ãããŸããŸãªçšåºŠã«é ããã¢ã¯ã»ã©ã¬ãŒã¿ããã°ã©ãã³ã°ã容æã«ããããã«ãããã€ãã®ããã°ã©ãã³ã°èšèªãšæ¡åŒµæ©èœãææ¡ãããŸããã
çŸåšæãæåãªã¿ã€ãã®ã¢ã¯ã»ã©ã¬ãŒã¿ã§ããGPUã䜿çšããŠéã°ã©ãã£ã«ã«ã¢ããªã±ãŒã·ã§ã³ãå éããæåã®è©Šã¿ã¯é¢åã§ãããå¶éãããå¶åŸ¡ãããŒããµããŒãããæŽæ°æŒç®ããµããŒãããªãã·ã§ãŒããŒã³ãŒãã®åœ¢åŒã§èšç®ãæ瀺ããå¿
èŠããããŸããã 次第ã«ããããã®å¶éã¯åé€ãããã°ã©ãã£ãã¯ãããã§ã®èšç®ã®æ®åã«è²¢ç®ããã°ã©ãã£ãã¯ä»¥å€ã®é åã®å°é家ãããããããã°ã©ã ã§ããããã«ãªããŸããã ãã®æ¹åã§æãéèŠãªã¹ãããã¯ãCUDAããã°ã©ãã³ã°èšèªã®ãªãªãŒã¹ã§è¡ãããŸããã C / C ++ãæ¡åŒµããè¿œå ã®ä¿®é£ŸåãšããŒã¯ãŒããé¢æ°ã®ã©ã€ãã©ãªãã«ãŒãã«ãšåŒã°ããã³ãŒãã®äžéšãèµ·åããã¡ã«ããºã ãGPUãè¿œå ããŸãã
CUDAãæ©æã«æ¡çšãããç¬èªã®è£œåã§ãããé«å質ã®CUDAã³ãŒããèšè¿°ããããšãå°é£ã§ãããšããäºå®ãšçžãŸã£ãŠãOpenCLãC ++ AMPãOpenACCãªã©ã®ã¢ã¯ã»ã©ã¬ãŒã¿ããã°ã©ãã³ã°ãžã®ä»ã®ã¢ãããŒããçãŸããŸããã OpenCLã¯CUDAã®éç¬å çãªå¯Ÿå¿ç©ã§ãããå€ãã®å€§äŒæ¥ã®ãµããŒããåããŠããŸãã NVidiaãããã ãã«éãããAMD GPUããã«ãã³ã¢CPUãMICïŒIntel Xeon PhiïŒãDSPãFPGAããµããŒãããŠãããããããŒã¿ãã«ã§ãã ãã ããCUDAãšåæ§ã«ãéåžžã«äœãã¬ãã«ã§ãã ããã°ã©ããŒãããŒã¿ã®ç§»åãçŽæ¥å¶åŸ¡ããå¿
èŠããããŸãããŸããã¡ã¢ãªãŒéå±€å
ã®å€æ°ã®ä¿åå ŽæãçŽæ¥æ±ºå®ããã³ãŒãã«æåã§äžŠååŠçãå®è£
ããå¿
èŠããããŸãã C ++ Accelerated Massive ParallelismïŒC ++ AMPïŒã¯äžéã¬ãã«ã§æ©èœããŸãã ãã§ã«C ++èªäœã§äžŠåã¢ã«ãŽãªãºã ãèšè¿°ã§ããããã°ã©ããããã¹ãŠã®äœã¬ãã«ã³ãŒããé ããŸãã ãfor eachãã¹ããŒãã¡ã³ãã¯ã䞊åã³ãŒããã«ãã»ã«åããŸãã C ++ AMPã¯Windowsã«é¢é£ä»ããããŠãããCPUããŸã ãµããŒãããŠããããèµ·åæã®ãªãŒããŒãããã倧ããããããã®å©ããåããŠçæã³ãŒããé«éåããã®ã¯äºå®äžäžé©åã§ãã
OpenACCã¯ããã§ã«ã¢ã¯ã»ã©ã¬ãŒã¿ãŒããã°ã©ãã³ã°ã«å¯Ÿããéåžžã«é«åºŠãªã¢ãããŒãã§ãããããã°ã©ããŒãã³ãŒãã«ãã£ã¬ã¯ãã£ããæäŸã§ãããããã³ã³ãã€ã©ãŒã«ã³ãŒãã®ã©ã®éšåãå éããå¿
èŠãããããããšãã°GPUã«åºè·ããããšã«ãã£ãŠã³ã³ãã€ã©ãŒã«éç¥ã§ããŸãã ãã®èãæ¹ã¯ãOpenMPã䜿çšããŠCPUããã°ã©ã ã䞊ååããæ¹æ³ã«äŒŒãŠããŸãã å®éã2ã€ã®ã¢ãããŒããçµã¿åãããåªåããªãããŠããŸãã OpenACCã¯çæ段éã«ãããçŸåšå°æ°ã®ã³ã³ãã€ã©ãŒã§ã®ã¿ãµããŒããããŠããŸãã
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã®ããã°ã©ãã³ã°é åãå°æ¥ã©ã®ããã«çºå±ããããç解ããã«ã¯ãéå»ã«ä»ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã䜿çšããŠåæ§ã®ããã»ã¹ãã©ã®ããã«é²è¡ãããã調ã¹ã䟡å€ããããŸãã ããšãã°ãåæã®é«åºŠãªPCã«ã¯è¿œå ã®ããã»ããµããããŸãããããã¯ãæµ®åå°æ°ç¹èšç®ãå®è¡ããã³ããã»ããµã§ãã ãã®åŸãäžå€®åŠçè£
眮ïŒCPUïŒãåãããããã«çµ±åãããçŸåšã§ã¯ãã®äžéšãšãªã£ãŠããŸãã ç°ãªãã¬ãžã¹ã¿ãšç®è¡è«çããã€ã¹ïŒALUïŒã®ã¿ããããŸãã ãã®åŸã®SIMDããã»ããµæ¡åŒµïŒMMXãSSEãAltiVecãAVXïŒã¯åå¥ã®ããããšããŠãªãªãŒã¹ãããŸããã§ããããçŸåšã§ã¯ããã»ããµã³ã¢ã«å®å
šã«çµ±åãããŠããŸãã æµ®åå°æ°ç¹æŒç®ãšåæ§ã«ãSIMDåœä»€ã¯åå¥ã®ALUã§èšç®ãããç¬èªã®ã¬ãžã¹ã¿ã䜿çšããŸãã
é©ãã¹ãããšã«ããããã®2çš®é¡ã®åœä»€ã¯ãããã°ã©ããŒã®èŠ³ç¹ãšã¯å€§ããç°ãªããŸãã ææã®çš®é¡ãšãã®æäœã¯é·ãéæšæºåãããŠããïŒIEEE 754ïŒãä»æ¥ã©ãã§ã䜿çšãããŠããŸãã ãããã¯ãéåžžã®ç®è¡æŒç®ãšçµã¿èŸŒã¿ã®å®ããŒã¿åïŒé«ç²ŸåºŠã®å®æ°ã®å Žåã¯32ããããå粟床ã®å Žåã¯64ãããïŒãéããŠãé«ã¬ãã«ã®ããã°ã©ãã³ã°èšèªã§äœ¿çšã§ããŸãã ããã©ããããSIMDåœä»€ã«ã¯æšæºããªãããã®ååšèªäœã¯ããã°ã©ãã«ã»ãšãã©é ãããŠããŸãã ãããã®åœä»€ã䜿çšããŠèšç®ããã¯ãã«åããããšã¯ãã³ã³ãã€ã©ã«å§ä»»ãããŸãã ãããã®åœä»€ãæ瀺çã«äœ¿çšãããéçºè
ã¯ãç¹å¥ãªéã¯ãã¹ãã©ãããã©ãŒã ãã¯ãã䜿çšããŠã³ã³ãã€ã©ã«é£çµ¡ããå¿
èŠããããŸãã
GPUããã³MICã¢ã¯ã»ã©ã¬ãŒã¿ã®ããã©ãŒãã³ã¹ã¯SIMDã®æ§è³ªã«ãããã®ã§ããããããããã®éçºã¯ä»¥åã®SIMDã¢ã¯ã»ã©ã¬ãŒã¿ãä»ããŠè¡ããããšèããŠããŸãã SIMDãšãããæåãããCUDAã®äž»èŠãªæ©èœãšã®ãã1ã€ã®é¡äŒŒç¹ã¯ãCUDAãGPUã®SIMDãšã³ãã£ãã£ã®ç¹æ§ãé ããããã°ã©ããŒããã¯ãã«ãæäœããã¯ãŒãïŒãã¯ãã«ïŒã§ã¯ãªããã¹ã«ã©ãŒããŒã¿ãæäœããã¹ããªãŒã ã®èŠ³ç¹ããèããããšãå¯èœã«ããããšã§ãã ãããã£ãŠãééããªããã¢ã¯ã»ã©ã¬ãŒã¿ãŒãããã»ããµãŒãæèŒãããããã«è»¢éãããŸãããããã°ã©ããŒãããŒããŠã§ã¢GPUããŒã¿åã«çŽæ¥ã¢ã¯ã»ã¹ã§ããªãããã«ãããã°ã©ã ã³ãŒãã¯éåžžã®CPUã³ãŒãã«ååã«åã蟌ãŸããªããšèããŠããŸãã
äžéšã®ã¢ã¯ã»ã©ã¬ãŒã¿ã¯ãAMD APUïŒXbox Oneã§äœ¿çšïŒãçµ±åãããHDã°ã©ãã£ãã¯ã¹ãåããIntelããã»ããµãNVIDIAã®Tegra SoCãªã©ãåŸæ¥ã®ããã»ããµãšãããäžã§æ¢ã«çµåãããŠããŸãã ãã ããã¢ã¯ã»ã©ã¬ãŒã¿ãŒã¯ãæ°åŠã³ããã»ããµãŒããã³SIMDæ¡åŒµã§è¡ãããã®ãšåãçšåºŠã«åŸæ¥ã®ããã»ããµãŒã³ã¢ãšçµã¿åãããããšãã€ãŸããäžå€®ããã»ããµãŒã®äžéšãšããŠã¬ãžã¹ã¿ãŒã»ããããã³åå¥ã®ALUã«ã«ããããããšã¯é£ãããããããããå¥åã®ã³ã¢ã®ãŸãŸã«ãªããŸãã ã æçµçã«ãã¢ã¯ã»ã©ã¬ãŒã¿ãŒã¯ãåæããããã£ãã·ã¥ãå®å
šã«ç°ãªããã€ãã©ã€ã³å®è£
ãGDDR5ã¡ã¢ãªãæ¡éãã«å€ãã¬ãžã¹ã¿ãŒããã«ãã¹ã¬ãããªã©ãCPUãšã¯ç°ãªãã¢ãŒããã¯ãã£ãŒã«ãããéåžžã«é«éã䞊åããšãã«ã®ãŒå¹çã«åªããŠããŸãã ãã®çµæãã¢ã¯ã»ã©ã¬ãŒã¿ã§ã³ãŒããå®è¡ããè€éãã¯äŸç¶ãšããŠæ®ã£ãŠããŸãã éåžžãåäžã®ãããäžã«äœæãããããã»ããµã³ã¢ã§ããããã¡ã¢ãªéå±€ã®äžäœã¬ãã«ã®ã¿ãå
±éããŠãããããCPUãšã¢ã¯ã»ã©ã¬ãŒã¿éã®ããŒã¿äº€æã®é床ã¯ããããåäžããŸãããäŸç¶ãšããŠããã«ããã¯ã®ãŸãŸã§ãã
ããã€ã¹éã®ããŒã¿äº€æã®ããã»ã¹ãæ瀺çã«å¶åŸ¡ããå¿
èŠæ§ã¯ããšã©ãŒã®é倧ãªåå ã§ãããããã°ã©ãã«å€§ããªè² æ
ãããããŸãã å°ããªã¢ã«ãŽãªãºã ã§ã¯ãèšç®ãã®ãã®ãããå€ãã®ã³ãŒããèšè¿°ããŠããŒã¿ã®äº€æãç·šæããå¿
èŠãããããšããããããŸãã ãã®è² æ
ããªããããšã¯ãC ++ AMPãOpenACCãªã©ã®é«ã¬ãã«ããã°ã©ãã³ã°ã¢ãããŒãã®äž»ãªå©ç¹ã®1ã€ã§ãã äœã¬ãã«ã®å®è£
ã§ããããã®åé¡ã解決ããããšãç®çãšããŠããŸãã ããšãã°ããããããã°ããçµ±åãããã¡ã¢ãªã¢ã¯ã»ã¹ã¯ãCUDAãOpenCLãããã³NVIDIA GPUããŒããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ã®ææ°ããŒãžã§ã³ã§è¡ãããäž»ãªæ¹åç¹ã®1ã€ã§ãã ããã§ããåªããããã©ãŒãã³ã¹ãå®çŸããã«ã¯ãOpenACCãªã©ã®éåžžã«é«ã¬ãã«ã®ãœãªã¥ãŒã·ã§ã³ã§ãã£ãŠããéåžžã¯ããã°ã©ããŒã®å©ããå¿
èŠã§ãã ç¹ã«ãå¿
èŠãªå Žæã§ã®ã¡ã¢ãªã®å²ãåœãŠãšããŒã¿ã®è»¢éã¯ãå€ãã®å Žåæåã§è¡ãå¿
èŠããããŸãã
æ®å¿µãªããããã®ãããªã¢ãããŒãã«ãã£ãŠæäŸããããã¹ãŠã®åçŽåã¯ãéšåçãªè§£æ±ºçã«ãããªãããšãå€æããå ŽåããããŸãã å°æ¥ã®ããã»ããµãä»æ¥ã®ïŒå°åã®ïŒã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã«è¿ãããšãèãããšãå
±æã¡ã¢ãªã§åŠçã§ãããããå€ãã®ã³ã¢ãæèŒããå¯èœæ§ããããŸãã 代ããã«ãåçµæ¶ã«ã¯æ žã®ã¯ã©ã¹ã¿ãŒããããåã¯ã©ã¹ã¿ãŒã«ã¯ç¬èªã®ã¡ã¢ãªãããããããããããã®æ žã®äžã«3次å
空éã§é
眮ããããšèããŠããŸãã ã¯ã©ã¹ã¿ãŒã¯ãMPIãªã©ã®ãããã³ã«ã䜿çšããŠåããããäžã§å®è¡ããããããã¯ãŒã¯ã«ãã£ãŠçžäºã«æ¥ç¶ãããŸãã ã€ã³ãã«ã¯ããããã¯ãŒã¯æ©èœãå°æ¥ã®Xeonãããã«è¿œå ãããããšãçºè¡šããã°ããã§ãããããã¯ãã®æ¹åãžã®äžæ©ã§ãããããããã¯çå®ããããã»ã©é ããããŸããã ãããã£ãŠãå°æ¥çã«ã¯ãã¬ã€ãã³ã·ãšã¹ã«ãŒãããã«æé©åãããã³ã¢ãçµã¿åãããããšã«ããããããããŸããŸãäžå質ã«ãªãå¯èœæ§ããããŸãã ãããã¯ãŒã¯ã¢ããã¿ãŒãå§çž®ããã³ãšã³ã³ãŒãã»ã³ã¿ãŒãFPGAãªã©
ããã¯ããã®ãããªããã€ã¹ãã©ã®ããã«ããã°ã©ã ãããã«ã€ããŠéåžžã«éèŠãªè³ªåãæèµ·ããŸãã ãã®è³ªåã«å¯Ÿããçãã¯ããã«ãã³ã¢CPUãSIMDæ¡åŒµæ©èœãããã³æ¢åã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã®ä»æ¥ã®è§£æ±ºæ¹æ³ã«é©ãã»ã©äŒŒãŠãããšä¿¡ããŠããŸãã ããã¯ãã©ã€ãã©ãªãèªååããŒã«ãæ¥æ倧工ãšåŒã°ãã3ã€ã®ã¬ãã«ã§çºçããŸãã ã©ã€ãã©ãª-誰ãããã§ã«ã¢ã¯ã»ã©ã¬ãŒã¿çšã«æé©åããã©ã€ãã©ãªããã®é¢æ°ãžã®åçŽãªåŒã³åºãã«åºã¥ããæãåçŽãªã¢ãããŒãã å€ãã®ææ°ã®æ°åŠã©ã€ãã©ãªã¯ãã®ã¯ã©ã¹ã«å±ããŸãã ã»ãšãã©ã®ããã°ã©ã èšç®ããããã®ã©ã€ãã©ãªé¢æ°ã§å®è¡ãããå Žåããã®ã¢ãããŒãã®é©çšã¯å®å
šã«æ£åœåãããŸãã ããã«ãããè€æ°ã®å°é家ã1ã€ã®åªããã©ã€ãã©ãªãäœæããŠããã®ã©ã€ãã©ãªã䜿çšãããå€ãã®ã¢ããªã±ãŒã·ã§ã³ãé«éåã§ããŸãã
C ++ AMPããã³OpenACCã¯ãç°ãªãã¢ãããŒã-èªååããŒã«ã䜿çšããŸãã ãã®ã¢ãããŒãã§ã¯ãããŒãã¯ãŒã¯ãã³ã³ãã€ã©ã«è»¢éãããŸãã ãã®æåã¯ãæ¢åã®ãœãããŠã§ã¢ããŒã«ã®å質ãšè€éãã«äŸåããåè¿°ã®ããã«ãå€ãã®å Žåãããã°ã©ããŒã®ä»å
¥ãå¿
èŠã§ãã ããã«ãããããããã»ãšãã©ã®ããã°ã©ããŒã¯ãã©ã€ãã©ãªãŒããäºåå®çŸ©ãããé¢æ°ã䜿çšããããšã«éå®ãããªããã®ã¢ãããŒãã䜿çšããŠãããã«è¯ãçµæãéæã§ããŸãã ããã¯ãè€æ°ã®å°é家ã°ã«ãŒããSQLã®ãå
éšããå®è£
ããæ¹æ³ã«äŒŒãŠãããéåžžã®éçºè
ã¯å°æ¥çã«æ¢è£œã®æé©åãããã³ãŒãã䜿çšã§ããŸãã
æåŸã«ãæ¥æ倧工ã¢ãããŒããCUDAããã³OpenCLã§äœ¿çšãããŸãã ããã°ã©ããŒã¯ãã»ãŒãã¹ãŠã®ã¢ã¯ã»ã©ã¬ãŒã¿ãŒãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå®å
šã«å¶åŸ¡ã§ããŸãã å®è£
ãé©åã§ããã°ãçµæã®ã³ãŒãã¯ãåã®2ã€ã®ã³ãŒãã®ããããããåªããŠããŸãã ããããããã¯ãã®ã¢ãããŒããç 究ããããã®çžåœãªåªåã«ãã£ãŠéæãããå€ãã®è¿œå ã³ãŒããäœæããå¯èœæ§ã®ãããšã©ãŒã®äœå°ãå¢ãããŸãã éçºç°å¢ããã³ãããã°ç°å¢ã«å¯Ÿããããããçš®é¡ã®æ¹åã«ããããããã®ãã¹ãŠã®åé¡ã軜æžã§ããŸãããããçšåºŠãŸã§ããã§ããŸããã ãããã£ãŠããã®ã¢ãããŒãã¯äž»ã«å°é家ã«åœ¹ç«ã¡ãŸãã åã®2ã€ã®ã¢ãããŒãã§è¿°ã¹ãæ¹æ³ãéçºããŠãã人ã
ã©ã€ãã©ãªã®äœ¿ããããã«ãããããã°ã©ãã¯å¯èœãªéãã©ã€ãã©ãªã䜿çšã§ããŸãã ãã ããããã¯ã察å¿ããã©ã€ãã©ãªé¢æ°ãååšããå Žåã«ã®ã¿å¯èœã§ãã 人æ°ã®ããå°åã§ã¯ããã®ãããªã©ã€ãã©ãªãéåžžååšããŸãã ããšãã°ãè¡åã®æäœïŒBLASïŒã ããããé¢é£åéãèšç®ãæ§é åãããŠããªãå Žæã§ã¯ãã¢ã¯ã»ã©ã¬ãŒã¿ã©ã€ãã©ãªãå®è£
ããããšã¯å°é£ã§ãã é©åãªã©ã€ãã©ãªããªãå Žåããã¡ããååã«éçºãããŠããªãéããããã°ã©ãã¯èªååããŒã«ãéžæããŸãã ã©ã€ãã©ãªã®åœ¢åŒã§ã¯å©çšã§ãããããã©ãŒãã³ã¹ãããã»ã©èŠæ±ãããã³ã³ãã€ã©ã«ãã£ãŠãµããŒããããèšç®ã¯ãã»ãšãã©ã®å ŽåãèªååããŒã«ã䜿çšããŠå®è£
ãããŸãã ãã以å€ã®å Žåã¯ãæ¥æ倧工ã¡ãœããã䜿çšãããŸãã OpenCLã¯CUDAã§æ瀺ãããæåãããœãªã¥ãŒã·ã§ã³ãçµåãããããã©ã€ãšã¿ãªã§ã¯ãªããããŸããŸãªããŒããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ããµããŒãããŠãããããMPIãåæ£ã¡ã¢ãªã·ã¹ãã ã®ããã°ã©ãã³ã°ã®äºå®äžã®æšæºã«ãªã£ãããã«ããã®åéã§æ¯é
çã«ãªããšèããŠããŸãã
äžèšã®ããŒããŠã§ã¢æ©èœãšé²åããã»ã¹ãèæ
®ãããšãå°æ¥ã®ããã»ããµãããã«ã¯ç¬èªã®ã¡ã¢ãªãæã€å€ãã®ã¯ã©ã¹ã¿ãå«ãŸãããšèšããŸãã åã¯ã©ã¹ã¿ãŒã¯å€ãã®ã³ã¢ã§æ§æãããŸããããã¹ãŠã®ã³ã¢ãæ©èœçã«åäžãšããããã§ã¯ãããŸããã åãã«ãã¹ã¬ããã³ã¢ã¯å€æ°ã®ã³ã³ãã¥ãŒãã£ã³ã°ãŠãããïŒã€ãŸããæ©èœãŠããããŸãã¯ALUïŒã§æ§æãããåã³ã³ãã¥ãŒãã£ã³ã°ãŠãããã¯SIMDã³ãã³ããå®è¡ããŸãã å°æ¥ã®ãããã«ãã®ãã¹ãŠãäžåºŠã«å«ãŸããªãå Žåã§ãããããã¯ãã¹ãŠ1ã€ã®éèŠãªé¡äŒŒæ§ãã€ãŸã䞊åã¬ãã«ã®éå±€ãæã¡ãŸãã ãã®ãããªã·ã¹ãã çšã®å¹ççã§ç§»æ€æ§ã®é«ãããã°ã©ã ãäœæããããã«ã倧é䞊ååŠçææ³ãšåŒã°ãããã®ãææ¡ããŸãã ããã¯ãããã°ã©ããŒãMPIããã°ã©ã ãç°ãªãæ°ã®ã³ã³ãã¥ãŒãã£ã³ã°ããŒãã«é©å¿ãããæ¹æ³ããŸãã¯OpenMPã³ãŒããç°ãªãæ°ã®ã³ã¢ãŸãã¯ã¹ã¬ããã«æé»çã«é©å¿ããæ¹æ³ã®äžè¬åã§ãã
åºç¯ãªäžŠè¡æ§ã®åºæ¬çãªèãæ¹ãšãã®ååã®çç±ã¯ãããããã¬ãã«ã§ããã©ã¡ãŒã¿ãŒåå¯èœãªåºå€§ãªäžŠè¡æ§æ©èœãæäŸããããšã§ãã ãã©ã¡ãŒã¿åã«ãããä»»æã®ã¬ãã«ã§ããã°ã©ã ã®äžŠå床ãäœäžãããã®ã¬ãã«ã®ããŒããŠã§ã¢äžŠå床ãšäžèŽããŸãã ããšãã°ãå
±æã¡ã¢ãªãåããã·ã¹ãã ã§ã¯ãæé«ã¬ãã«ã®äžŠååŠçã¯äžèŠã§ããã1ã€ã®ãã¯ã©ã¹ã¿ãŒãã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã åæ§ã«ãèšç®ãŠããããSIMDåœä»€ãå®è¡ã§ããªãã«ãŒãã«ã§ã¯ãSIMDã®å¹
ãæå®ãããã©ã¡ãŒã¿ãŒã1ã«èšå®ããå¿
èŠããããŸãã ãã®ææ³ã䜿çšãããšããã«ãã³ã¢CPUãGPUãMICãããã³ãã®ä»ã®ããã€ã¹ã®æ©èœãå®è£
ã§ããã ãã§ãªããå°æ¥ã®ããŒããŠã§ã¢ã¢ãŒããã¯ãã£ãå®è£
ã§ããŸãã ãã®æ¹æ³ã§ããã°ã©ã ãäœæããããšã¯ééããªãå°é£ã§ãããåºç¯ãªäžŠè¡æ§ã«ãããåäžã®ã³ãŒãããŒã¹ã䜿çšããŠå¹
åºãã¯ã©ã¹ã®ããã€ã¹ããé«ãããã©ãŒãã³ã¹ãåŒãåºãããšãã§ããŸãã
ãã®ã¢ãããŒãã¯ãnäœã®çŽæ¥ã¢ããªã³ã°ã®åé¡ã§ãã¹ãããŸããã OpenCLã䜿çšããåºç¯ãªäžŠååŠçã¢ã«ãŽãªãºã ã®å¯äžã®å®è£
ãäœæããNVIDIA GeForce Titan GPUãAMD Radeon 7970 GPUãIntel Xeon E5-2690 CPUãIntel Xeon Phi 5110P MICã®4ã€ã®å®å
šã«ç°ãªãããŒããŠã§ã¢ã¢ãŒããã¯ãã£ã§æž¬å®ããŸããã ãã¹ãŠã®æµ®åå°æ°ç¹æŒç®ã®54ïŒ
ãFMAæŒç®ïŒFMA-环ç©ãšä¹ç®ã®æŒç®ïŒã§ã¯ãªãããšãèæ
®ãããšãåºç¯ãªäžŠååŠçã«ãããNVIDIA Titanã®çè«äžã®ããŒã¯ã®75ïŒ
ãRadeonã®95ïŒ
ãCPUã®80.5ïŒ
ã®ããã©ãŒãã³ã¹ãéæã§ããŸããã MICã®å Žåã¯80ïŒ
ã ããã¯åãªãå¥ã®äŸã§ããããã®çµæã¯éåžžã«ææã§ãã å®éãæ¢åããã³å°æ¥ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã·ã¹ãã çšã®ããŒã¿ãã«ã§é«æ§èœãªããã°ã©ã ãäœæããããã®å¯äžã®ã¢ãããŒãã¯ãããçšåºŠã®åæå®è¡æ§ã§ãããšèããŠããŸãã
[ ãœãŒã¹ ]
2014幎1æ9æ¥
ã«ãã«ã»ããããŒãšããŒãã£ã³ã»ããŒãã£ãŒ