ç§ãã¡ã®ç®æšã¯ã4ã€ã®Intel Xeon E7-8890 v4ããã»ããµãæèŒããã³ã³ãã¥ãŒã¿ãŒã§ããã°ã©ã ãå¹æçã«åäœãããããšã§ã ã ã·ã¹ãã ã«ã¯512 GBã®RAMãæèŒãããLinux 3.10.0-327.el7.x86_64ãã€ã³ã¹ããŒã«ãããã³ãŒãã¯Intel Parallel Studio XE 2016 U2ã䜿çšããŠã³ã³ãã€ã«ãããŸããã
ãã©ã³ã¹ããŒããããã¯ãŒã¯ã§æé©ãªã«ãŒããèŠã€ããåé¡ã¯ããå·¡åã»ãŒã«ã¹ãã³åé¡ããšããŠç¥ãããŠããŸãã å®éã«ã¯ãããã¯ãäŸãã°ãååã茞éããæè¯ã®æ¹æ³ãèŠã€ããããšã§ãã åœåããã®çš®ã®ã¿ã¹ã¯ã®ãå¹çãã¯æãå®äŸ¡ãªæ¹æ³ãéžæããããšãæå³ããŠããŸããããéå»æ°å幎ã«ããã£ãŠãã«ãŒãã³ã¹ããã®æŠå¿µãæ¡å€§ããŸããã çŸåšãããã«ã¯ç°å¢ãžã®åœ±é¿ããšãã«ã®ãŒã®äŸ¡æ Œãããã³æéãå«ãŸããŸãã ããã«å ããŠãããžãã¹ããã³ãµãã©ã€ãã§ãŒã³ã®ã°ããŒãã«åã«ããããã©ã³ã¹ããŒããããã¯ãŒã¯ã®ãµã€ãºãšè€éããã²ããŠã¯èšç®ã®åºç€ãšãªãã¢ãã«ãå€§å¹ ã«æé·ãããšããäºå®ã«è³ããŸããã äžè¬çãªã«ãŒãæé©åã®åé¡ã¯ãNPããŒããšããŠåé¡ãããããã«ãªããŸããã éåžžã決å®è«çãªæ¹æ³ã¯ããã®ãããªåé¡ã®è§£æ±ºã«ã¯é©ããŠããŸããã
åæ£åãã«ãã³ã¢ã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ã®éçºã«ãããåé¡ã解決ããããã®ãã¥ãŒãªã¹ãã£ãã¯ãªææ³ãéçºãããç¹ã«ããããã¢ãªã³ãããŒæé©åïŒACOïŒã¢ã«ãŽãªãºã ãæåè£ã«é©çšãããŸããã 次ã«ãACOã®åºæ¬çãªå®è£ ãåæããããã»ã¹ãèŠãŠãã³ãŒãã®æ®µéçãªæ¹åã«ã€ããŠèª¬æããŸãã ä»åŸãæé©åææ³ã«ãããããã°ã©ã ãçè«äžéæå¯èœãªããã©ãŒãã³ã¹ããã³ã¹ã±ãŒã©ããªãã£ã¬ãã«ã«è¿ã¥ããããšãã§ããŸããã
antã¢ã«ãŽãªãºã ã«ã€ããŠ
ããã°ã©ã ã§äœ¿çšãããŠããã¢ã«ãŽãªãºã ã«ã€ããŠè©±ããŸãããã ã¢ãªã®ã³ãããŒã®è¡åã«åºã¥ããŠããŸãã æè«ã¯é£ç©æºãæ¢ããŠãããä»ã®ã¢ãªãåŒãä»ãããã§ãã¢ã³ãéãéã瀺ããŠããŸãã æéã®çµéãšãšãã«ããã§ãã¢ã³ã¯èžçºããŸããã€ãŸããé·ããã¹ã¯çããã¹ãããé åãå°ãªããªããŸãã ãã®çµæããã¹ãçããªã£ããéããªã£ããããã»ã©ãããå€ãã®ã¢ãªãé¢å¿ãæã¡ããã¹ã«æ²¿ã£ãŠééããã¢ãªã®ãããããããã«é åçã«ãªããŸãã
次ã®å³ã¯ããã©ã³ã¹ããŒããããã¯ãŒã¯ã®äŸã瀺ããŠããŸãã å®ç·ã¯ããŒãéã®çŽæ¥ã«ãŒãã瀺ããç¹ç·ã¯éæ¥ã«ãŒãã瀺ããŸãã
ãã©ã³ã¹ããŒããããã¯ãŒã¯ã®äŸ
åçŽãªã³ã³ãã¥ãŒã¿ãŒãšãŒãžã§ã³ãã¯ã確çè«çã¢ãããŒãã䜿çšããŠãantã¢ã«ãŽãªãºã ã䜿çšããŠãã©ã³ã¹ããŒãåé¡ã®è§£æ±ºçãèŠã€ããããšãã§ããŸãã ãã ãããã®ã¢ã«ãŽãªãºã ã®äžŠåå®è£ ã¯ãããã€ãã®å¶éã«ããç°ãªããŸãããéå»ã«ãã§ã«èª¿æ»ãããŠããŸãã
ããã§ã2002幎ã«ãMarcus Randallæ°ã¯ãã¿ã¹ã¯ã䞊ååããããã®ã¢ãããŒãã瀺ãè³æïŒAnt Colony Optimizationã®äžŠåå®è£ ãJournal of Parallel and Distributed Computing 62ïŒãå ¬éããŸããã ãã ãããã®å®è£ ã§ã¯ããã§ãã¢ã³ãããªãã¯ã¹ãç¶æããããã«ããããããã¢ãã«ã®ç¬ç«ãããŠãããã§ãããã¢ãªãéã®å€æ°ã®çžäºäœçšãå¿ èŠã§ããããããã¯äžŠè¡ããŠäœçšããŸããã ãã®çµæããœãªã¥ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã¯ãã¢ãªéã®ã¡ãã»ãŒãžããã·ã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ïŒMPIïŒã«ãã£ãŠå¶éãããŠããŸããã
2015幎ã«ãæè¡ã䜿çšããŠèŒžéãããã¯ãŒã¯ãæé©åããããã®æ¹æ³è«ã説æããè³æãçºè¡ãããŸããïŒVeluscekãM.ãTãKalganovaãPãBroomheadãA.Grichnikã茞éãããã¯ãŒã¯æé©åã®è€åç®æšæ³ãExpert Systems with Applications 42ïŒ OpenMPããã³å ±æã¡ã¢ãªã ãã ãããã®ã¢ãããŒãã¯ãåŠçã³ã¢ãšã¹ã¬ããã®æ°ãæ¯èŒçå°ãªãã·ã¹ãã ã«ã®ã¿é©ããŠããŸãã
ã¢ã«ãŽãªãºã ã®åºæ¬çãªå®è£
以äžã¯ãantã¢ã«ãŽãªãºã ã®äžŠåå®è£ ã®åºç€ãšãªãã¢ãŒããã¯ãã£ã®ãããã¯å³ã§ãã 圌女ãšäžç·ã«å®éšãå§ããŸããã
Antã¢ã«ãŽãªãºã ã®æé©åãããŠããªãå®è£ ã®ã¹ããŒã
ãã®å³ã¯ããæãããšã«èµ·åãããå埩ããã»ã¹ã®æ°ã瀺ããŠããŸãã ããããã§ããã¢ãªãã®ã°ã«ãŒãããããã¯ãŒã¯ã«ãªãªãŒã¹ããããã§ãã¢ã³ãããªãã¯ã¹ãæ§ç¯ãããŸãã åå埩ããã»ã¹ã¯å®å šã«ç¬ç«ããŠãããç¬èªã®ã¹ã¬ããã§å®è¡ãããŸãã
ããã§ã¯éçãªãžã§ãåæ£ã䜿çšãããåOpenMPã¹ã¬ããããã®åœ¹å²ãæãããããŒã«ã«ãœãªã¥ãŒã·ã§ã³ãèŠã€ããŸãã ãã¹ãŠã®ã¹ã¬ããã®å®è¡ãå®äºãããšãã¡ã€ã³ã¹ã¬ããã¯èŠã€ãã£ãããŒã«ã«ãœãªã¥ãŒã·ã§ã³ãæ¯èŒããã°ããŒãã«ã«ãªãæé©ãªãœãªã¥ãŒã·ã§ã³ãéžæããŸãã
åºæ¬çãªãã¹ãçµæ
å©çšå¯èœãªåŠçã³ã¢ã®æ°ãå¢ããããšãã«ãã¢ããªã±ãŒã·ã§ã³ãå¹æçã«ã¹ã±ãŒãªã³ã°ãããã©ããã調ã¹ãæãéãæ¹æ³ã®1ã€ã¯ã次ã®ãšããã§ãã ãŸãã1ã€ã®ããã»ããµïŒNUMAããŒãïŒã§åºæ¬çãªããã©ãŒãã³ã¹ã€ã³ãžã±ãŒã¿ãŒãååŸããŸãã 次ã«ããã®ææšãããã€ããŒã¹ã¬ããã£ã³ã°ãã¯ãããžã䜿çšããå Žåãšäœ¿çšããªãå Žåã®äž¡æ¹ã§ãè€æ°ã®ããã»ããµã§èµ·åæã®ããã©ãŒãã³ã¹ã枬å®ããçµæãšæ¯èŒããŸãã çæ³çãªã·ããªãªã§ã¯ãããã©ãŒãã³ã¹ãåŠçã³ã¢ã®æ°ã®ã¿ã«äŸåãããšä»®å®ãããšã2ã€ã®ãœã±ãããåããã·ã¹ãã ã¯1ã€ã®ã·ã¹ãã ãåããã·ã¹ãã ã®2åã®ããã©ãŒãã³ã¹ã瀺ããŸãã
äžã®å³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®åºæ¬ããŒãžã§ã³ã®ãã¹ãçµæãèŠãããšãã§ããŸãã ä»ãç§ãã¡ã®ã³ãŒãã¯çæ³ããã¯ã»ã©é ãã§ãã ãœã±ããã®æ°ã2ïŒ48ã³ã¢ïŒãè¶ ããåŸãããã°ã©ã ã¯ããŸãããŸãã¹ã±ãŒãªã³ã°ããŸããã ãã€ããŒã¹ã¬ããã£ã³ã°ãæå¹ãª4ã€ã®ãœã±ããïŒ192åã®è«çã³ã¢ïŒã§ã¯ãåäžã®ãœã±ããã䜿çšããå Žåãããããã©ãŒãã³ã¹ãããã«äœäžããŸãã
ã¢ã«ãŽãªãºã ã®åºæ¬çãªæé©åãããŠããªãå®è£ ã®ãã¹ã
ããã¯ç§ãã¡ãå¿ èŠãšãããã®ã§ã¯ãªãã®ã§ãVTuneã¢ã³ãã䜿çšããŠããã°ã©ã ãç 究ããæãæ¥ãŸããã
VTune Amplifier XEã䜿çšããã¢ã«ãŽãªãºã ã®åºæ¬çãªå®è£ ã®åæ
ã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®ããã»ããµã§æ£åžžã«åäœããã®ã劚ãããã®ãèŠã€ããããã«ãVTune Amplifier XE 2016 Hotspotåæã䜿çšããããã°ã©ã ã®æãè² è·ã®é«ãã»ã¯ã·ã§ã³ãæ¢ããŸãã VTuneã¢ã³ãã§æž¬å®ãè¡ãéãåéãããããŒã¿ã®ãµã€ãºãå¶éããããã«ãã¯ãŒã¯ããŒããåæžãããŸããïŒ384ã®å埩ããã»ã¹ïŒã ä»ã®ãã¹ãã§ã¯å šè² è·ïŒ1000åã®å埩ïŒã䜿çšããŸããã
äžã®å³ã¯ãVTuneã¬ããŒãã瀺ããŠããŸãã ç¹ã«ãTop Hotspotsã°ã«ãŒãã®ã€ã³ãžã±ãŒã¿ãŒãšãé£ç¶ã³ãŒãå®è¡ã«è²»ããããæéã確èªã§ããSerial Timeã€ã³ãžã±ãŒã¿ãŒã«é¢å¿ããããŸãã
ããããããã¹ãããã¬ããŒã
ã¬ããŒããããã¢ããªã±ãŒã·ã§ã³ãã³ãŒããé£ç¶ããŠå®è¡ããã®ã«å€ãã®æéãè²»ãããŠããããšãããããŸããããã¯ãã·ã¹ãã ãªãœãŒã¹ã®äžŠå䜿çšã«çŽæ¥åœ±é¿ããŸãã ããã°ã©ã ã®æãããŒããããéšåã¯ãæååãæäœããããã®æšæºã©ã€ãã©ãªã®ã¡ã¢ãªå²ãåœãŠã¢ãžã¥ãŒã«ã§ããããã¯ãå€æ°ã®ã³ã¢ã§ã¯ååã«æ¡åŒµã§ããŸããã ããã¯éèŠãªçºèŠã§ãã äºå®ãOpenMPã¯1ã€ã®å ±æã¡ã¢ãªããŒã«ã䜿çšãããããç°ãªãã¹ã¬ããããæååã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯ãªããžã§ã¯ãã®ã¡ã¢ãªå²ãåœãŠã¢ãžã¥ãŒã«ïŒnewæŒç®åã䜿çšïŒãžã®èšå€§ãªæ°ã®äžŠååŒã³åºãã«ãããã¡ã¢ãªãããã«ããã¯ã«ãªããŸãã 以äžã®CPA䜿çšç¶æ³ã€ã³ãžã±ãŒã¿ãŒãèŠããšãå©çšå¯èœãª96åã®ã³ã¢ãã¹ãŠã䜿çšããŠããã«ãããããããã¢ããªã±ãŒã·ã§ã³ãéå¹ççã«å®è¡ããçæéã§ããããŒãããªãããšãããããŸãã
CPU䜿çšç
ãããŒã®ããžãŒç¶æ ãèŠããšããããŒã®è² è·ãåè¡¡ããŠããªãããšãããããŸãã
äžåè¡¡ãªè² è·
ãã®ãããåãæãã®çµããã«ããã¡ã€ã³ã¹ã¬ããïŒãã¹ã¿ãŒïŒãèšç®ãå®è¡ããä»ã®ã¹ã¬ããã¯çŸæç¹ã§ã¯äœã®åœ¹ã«ãç«ã¡ãŸããã
次ã«ãã³ãŒããåæããåŸããã®æé©åãåŠçããŸãã
æé©åçªå·1ã MPIãšOpenMPã®å ±æ
åºæ¬å®è£ ã«ååšããOpenMPã¹ããªãŒã ã®å€§èŠæš¡ãªã»ãããåãé€ãããã«ãæšæºã®ããã¹ã¿ãŒã¹ã¬ãŒããã¢ãããŒãã䜿çšããã¢ããªã±ãŒã·ã§ã³ã«å¥ã®ã¬ãã«ã®äžŠååŠçãè¿œå ããŸããã ã€ãŸãã䞊åã«å®è¡ãããMPIããã»ã¹ã¯ããããããç¹å®ã®æ°ã®OpenMPã¹ã¬ãããå«ãã§ãããåå¥ã®å埩ã§èšç®ãæ åœããŸãã ããã§ãæååãšãªããžã§ã¯ãã«ã¡ã¢ãªãå²ãåœãŠãããšã«é¢é£ããè² è·ãMPIããã»ã¹å šäœã«åæ£ãããŸãã ãã®ãããªACOã¢ã«ãŽãªãºã ã®ãã€ããªããMPI-OpenMPå®è£ ã以äžã®ãããŒãã£ãŒãã«ç€ºããŸãã
æé©åãããå®è£ çªå·1
VTuneã¢ã³ãã§åŸããã®ããã¹ãããŸããã
VTune Amplifier XEã䜿çšããæé©åãããã¢ã«ãŽãªãºã å®è£ ã®åæ
åºæ¬ããŒãžã§ã³ãšåãæ¹æ³è«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®æé©åããŒãžã§ã³ã調æ»ããŠããŸãã 次ã®å³ã¯ãTop Hotspotsã¬ããŒãã瀺ããŠããŸããããã¯ãããã°ã©ã ãæååã®ã¡ã¢ãªå²ãåœãŠæäœã«è²»ããæéãå°ãªããªã£ãããšã瀺ããŠããŸãã
ããããããã¹ãããã¬ããŒã
ãããŠãããŒã¹ïŒå·ŠïŒãšæé©åãããããŒãžã§ã³ã®ããã°ã©ã ã§ã®ããã»ããµäœ¿çšçã®ãã¹ãã°ã©ã ã§ãã
CPU䜿çšçã®ãã¹ãã°ã©ã
ããããã¹ããªãŒã ã®èªã¿èŸŒã¿ã®å€èŠ³ã§ãã 以åãããã¯ããã«ãã©ã³ã¹ãåããŠããããšãããããŸãã
è² è·åæ£
次ã®å³ã§ã¯ã䜿çšå¯èœãª96åã®ã³ã¢ããã¹ãŠå®å šã«ããŒããããŠããããšãããããŸãã
CPU䜿çšç
æ®å¿µãªãããOpenMPã¹ããªãŒã ã§åŸ æ©ããã®ã«æéãããããããŠãããæé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããMPIããã»ã¹ãçµæãã¡ã€ã«ãæŽæ°ããããã«ã¡ã€ã³ããã»ã¹ã«ããŒã¿ãéä¿¡ãããšããMPIããŒã¿ã亀æããŸãã ããã¯ãã·ã¹ãã ãMPIéä¿¡æäœã§éè² è·ã«ãªããšããäºå®ã«ãããã®ãšæ³å®ããŸããã
MPIã¯åæ£ã¡ã¢ãªã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããåããã»ã¹ã¯åå¥ã®ã¡ã¢ãªããŒã«ã§åäœããŸãã ãã®çµæã1ã€ã®ããã»ã¹ã«ãããªããžã§ã¯ããšããŒã¿æ§é ã®å€æŽã¯å¥ã®ããã»ã¹ã«ã¯èŠããŸããããåæã«MPIã®éåä¿¡ã¡ã«ããºã ã䜿çšããŠããã»ã¹éã®ããŒã¿ãéä¿¡ããå¿ èŠããããŸãã åãããšããçŸåšã®ãæãã«èŠã€ãã£ãæé©ãªãœãªã¥ãŒã·ã§ã³ã®ã¡ã€ã³ããã»ã¹ãžã®è»¢éã«ãåœãŠã¯ãŸããŸãã
èŠã€ãã£ãã°ããŒãã«ãœãªã¥ãŒã·ã§ã³ã¯ãè€éãªC ++ãªããžã§ã¯ãã§ããããã¯ã掟çã¯ã©ã¹ã®å€æ°ã®ãªããžã§ã¯ããããŒã¿ãå«ãã¹ããŒããã€ã³ã¿ãŒãããã³STLãã³ãã¬ãŒãã®ãã®ä»ã®ãªããžã§ã¯ãã§æ§æãããŠããŸãã MPIéä¿¡æäœã¯ããã©ã«ãã§è€éãªC ++ãªããžã§ã¯ãã®äº€æããµããŒãããŠããªããããéä¿¡ããã³åä¿¡ã¡ã«ããºã ã䜿çšããã«ã¯ã·ãªã¢ã«åãå¿ èŠã§ãããã®éããªããžã§ã¯ãã¯éä¿¡åã«ãã€ãã¹ããªãŒã ã«å€æãããåä¿¡åŸãã¹ããªãŒã ã¯åã³ãªããžã§ã¯ãã«å€æãããŸãã
ã·ãªã¢ã«åã«ãã£ãŠäœæãããè² è·ã¯äžå®ã§ãã å®è¡äžã®MPIããã»ã¹ã®æ°ã«é¢ä¿ãªããå€ããŠããæãã«1åçºçããŸãïŒãŸãã¯ãã¡ã€ã³ããã»ã¹ã®ã©ã³ã¯0ãã°ããŒãã«ãšããŠèªèãããæé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããå Žåã¯ãŸã£ããçºçããŸããïŒã ããã¯ãè€æ°ã®ã³ã¢ã§ã®ããã°ã©ã å®è¡ãžã®ç§»è¡äžã«MPIéä¿¡æäœãæå°éã«æããããã«éåžžã«éèŠã§ãã
äžã®å³ã§ã¯ãè¿œå ã®è² è·ãé»è²ïŒMPIéä¿¡æäœïŒããã³èµ€è²ïŒã¹ã¿ã³ãã€ããã³éè² è·ïŒã§åŒ·èª¿è¡šç€ºãããŠããŸãã
æé©åçµæNo. 1
ããã°ã©ã ã®ãã€ããªããMPI-OpenMPããŒãžã§ã³ã¯ãMPIããã»ã¹ãšOpenMPã¹ã¬ããéã®ããŒããã©ã³ã·ã³ã°ã«é¢ããŠãã¯ããã«åªããçµæã瀺ããŸããã ãŸããIntel Xeon E7-8890ããã»ããµãæèŒããã·ã¹ãã ã§äœ¿çšå¯èœãªå€æ°ã®ã³ã¢ãã¯ããã«å¹ççã«äœ¿çšããããšãå®èšŒããŸããã åºæ¬ããŒãžã§ã³ãšæ¯èŒããŠãçŸåšã®ããŒãžã§ã³ã®ããã°ã©ã ã®ãã¹ãçµæã¯æ¬¡ã®ããã«ãªããŸãã
ããã°ã©ã ã®åºæ¬ããŒãžã§ã³ãšæé©åããŒãžã§ã³ã®çµæã®æ¯èŒ
ããã§ã¯ãå©çšå¯èœãªã³ã¢ã®æ°ãå¢ãããšãããã°ã©ã ã®ã¹ã±ãŒã©ããªãã£ãå€§å¹ ã«åäžããããšãããããŸãã ããã©ãŒãã³ã¹ã®åäžã¯ããã€ããŒã¹ã¬ããã£ã³ã°ãæå¹ãªå Žåã«ãèŠãããŸãã
è¯å¥œãªçµæãéæããŸããããæé©åäœæ¥ã¯ãŸã å®äºããŠããŸããã ã€ã³ãã«TBBã©ã€ãã©ãªãŒã䜿çšããŠãã³ãŒãã®ããã©ãŒãã³ã¹ãããã«åäžãããŸãã
æé©åçªå·2ã Intel TBBã¢ããªã±ãŒã·ã§ã³
ãã€ããªããMPI-OpenMPã¢ããªã±ãŒã·ã§ã³å®è£ ã®ã³ãŒãã®æãããŒããããã»ã¯ã·ã§ã³ã調ã¹ããšãããæååãæäœããããã®å®è¡æéã®ããªãã®å²åãäŸç¶ãšããŠæšæºã©ã€ãã©ãªã«ããã£ãŠããããšãããããŸããã Intel TBBã®åçã¡ã¢ãªå²ãåœãŠã©ã€ãã©ãªã䜿çšãããšç¶æ³ãæ¹åããããã©ããã確èªããããšã«ããŸããã ãã®ã©ã€ãã©ãªã¯ãSTLã®æšæºstdïŒã¢ãã±ãŒã¿ãŒã¯ã©ã¹ã«äŒŒãããã€ãã®ã¡ã¢ãªå²ãåœãŠãã¿ãŒã³ãæäŸããscalable_allocatorããã³cache_aligned_allocatorãå«ã¿ãŸãã ãããã®ãã¿ãŒã³ã¯ã䞊è¡ããã°ã©ãã³ã°åé¡ã®2ã€ã®éèŠãªã°ã«ãŒãã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã
æåã®ã°ã«ãŒãã¯ã¹ã±ãŒãªã³ã°ã®åé¡ã§ãã ãããã¯ãã¡ã¢ãªå²ãåœãŠã¡ã«ããºã ãåäžã®å ±æããŒã«ã競ãããšããããšããäºå®ãåå ã§çºçããŸããããã«ãæåã®ã·ãªã¢ã«ããã€ã¹ããã€ã¹ã§ã¯ãäžåºŠã«1ã€ã®ã¹ã¬ããã®ã¿ãã¡ã¢ãªãå²ãåœãŠãããšãã§ããŸãã
åé¡ã®2çªç®ã®ã°ã«ãŒãã¯ããªãœãŒã¹ãžã®å ±æã¢ã¯ã»ã¹ã«é¢é£ããŠããŸãã ããšãã°ã2ã€ã®ã¹ã¬ãããåããã£ãã·ã¥ã©ã€ã³ã®ç°ãªãã¯ãŒãã«ã¢ã¯ã»ã¹ããããšããç¶æ³ãèããããŸãã ããã»ããµãã£ãã·ã¥éã®æ å ±äº€æã®æå°åäœã¯ã©ã€ã³ã§ãããããåã©ã€ã³ãç°ãªãã¯ãŒãã§åäœããå Žåã§ããããã»ããµéã§éä¿¡ãããŸãã ãã£ãã·ã¥ã©ã€ã³ã®ç§»åã«ã¯æ°çŸã¯ããã¯ãµã€ã¯ã«ãããããšããããããåœå ±æã¯ããã©ãŒãã³ã¹ãäœäžãããå¯èœæ§ããããŸãã
Intel TBBãšã®é£æºæ©èœ
ã€ã³ãã«TBBãã¢ããªã±ãŒã·ã§ã³ã«é©ããŠãããã©ããã確èªããæãç°¡åãªæ¹æ³ã®1ã€ã¯ãæšæºã®åçã¡ã¢ãªå²ãåœãŠé¢æ°ãã€ã³ãã«TBBã©ã€ãã©ãªlibtbbmalloc_proxy.so.2ã®é¢æ°ã«çœ®ãæããããšã§ãã ãããè¡ãã«ã¯ãããã°ã©ã ãç°å¢å€æ°LB_PRELOADã䜿çšããŠèµ·åãããšãã«ïŒå®è¡å¯èœãã¡ã€ã«ãå€æŽããã«ïŒã©ã€ãã©ãªãããŒãããããå®è¡å¯èœãã¡ã€ã«ãã©ã€ãã©ãªã«é¢é£ä»ããŸãã
: -ltbbmalloc_proxy LD_PRELOAD $ export LD_PRELOAD=libtbbmalloc_proxy.so.2
æé©åçµæNo. 2
æšæºã®ã¡ã¢ãªå²ãåœãŠã¡ã«ããºã ã䜿çšãããšãã«çºçããæãéèŠãªã¹ã±ãŒãªã³ã°åé¡ã解決ãããããIntel TBBã®åçã¡ã¢ãªå²ãåœãŠã©ã€ãã©ãªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã€ããªããMPI-OpenMPããŒãžã§ã³ãšæ¯èŒããŠ6ïŒ ã®ããã©ãŒãã³ã¹ãè¿œå ããŸãã
Intel TBBã«ããããã©ãŒãã³ã¹ã®æ¹å
æé©åçªå·3ã MPIããã»ã¹ãšOpenMPã¹ããªãŒã ã®æé©ãªçµã¿åãããèŠã€ãã
ãã®æ®µéã§ãåãè² è·ã§MPIããã»ã¹ãšOpenMPã¹ã¬ããã®ããŸããŸãªçµã¿åããã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã調æ»ããããšã«ããŸããã ãã®å®éšã§ã¯ã192åã®å©çšå¯èœãªãã¹ãŠã®è«çã³ã¢ã䜿çšããŸãããã€ãŸãã4ã€ã®ããã»ããµãŒãé¢äžãããã€ããŒã¹ã¬ããã£ã³ã°ãã¯ãããžãŒãæå¹ã«ãªããŸããã ãã¹ãäžã«ãMPIããã»ã¹ãšOpenMPã¹ããªãŒã ã®æé©ãªæ¯çãèŠã€ãããŸããã ã€ãŸããããããã3ã€ã®OpenMPã¹ããªãŒã ãå®è¡ãã64ã®MPIããã»ã¹ã䜿çšããŠæè¯ã®çµæãåŸãããŸããã
MPIããã»ã¹ãšOpenMPã¹ããªãŒã ã®ããŸããŸãªçµã¿åããã®ããã©ãŒãã³ã¹æ¯èŒã
ãŸãšã
antã¢ã«ãŽãªãºã ã®åºæ¬çãªäžŠåå®è£ ã®ç 究ã«ãããæååãšãªããžã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã®ã¡ã¢ãªå²ãåœãŠã¡ã«ããºã ã«é¢é£ããã¹ã±ãŒãªã³ã°ã®åé¡ãç¹å®ããããšãã§ããŸããã
æé©åã®æåã®æ®µéã§ã¯ãMPIãšOpenMPã䜿çšãããã€ããªããã¢ãããŒãã®äœ¿çšã«ãããããã»ããµãªãœãŒã¹ã®äœ¿çšå¹çãåäžããçç£æ§ãå€§å¹ ã«åäžããŸããã ãã ããããã°ã©ã ã¯ã¡ã¢ãªã®å²ãåœãŠã«å€ãã®æéãè²»ãããŸããã
第äºæ®µéã§ã¯ãIntel TBBã®åçã¡ã¢ãªå²ãåœãŠçšã©ã€ãã©ãªã®ãããã§ãçç£æ§ãããã«6ïŒ åäžãããããšãã§ããŸããã
ããã©ãŒãã³ã¹æ¹åã®ç¬¬3段éã§ã¯ãããã°ã©ã ã§ã¯64åã®MPIããã»ã¹ã®çµã¿åãããæé©ã§ãããããããã3ã€ã®OpenMPã¹ããªãŒã ãå®è¡ããããšãããããŸããã åæã«ãã³ãŒãã¯192ã®ãã¹ãŠã®è«çã³ã¢ã§ããŸãæ©èœããŸãã æçµçãªæé©åçµæã¯æ¬¡ã®ãšããã§ãã
æé©åçµæ
ãã®çµæããã¹ãŠã®æ¹åã®åŸãããã°ã©ã ã¯åºæ¬ããŒãžã§ã³ãã5.3åéããªããŸããã ããã¯äŸ¡å€ã®ããçµæã§ãããç 究ãšã³ãŒãã®æé©åã«è²»ãã䟡å€ããããšèããŠããŸãã