京ã¹ãã³ã³ã®ãããªå€§èŠæš¡ã·ã¹ãã ã§ã¯ä¿¡é Œæ§ãéåžžã«éèŠã§ãããåããŒãã®æ éçã100幎ã«1åã§ããã°ã1ããŒãã ãã䜿ã£ãŠããå Žåã«ã¯å šãåé¡ãªããã8äžããŒããããšãã»ãŒ10æéã«1åæ éããããšã«ãªã£ãŠããŸãã
ãã®ãããCPUã®åœä»€å®è¡ãICCã®éä¿¡ã¯ãšã©ãŒãæ€åºãããšãåãåœä»€ãéä¿¡ãåå®è¡ããŠäžéæ§ã®ãã€ãºã«ãã誀åäœãåé¿ããŠããããŸããã·ã¹ãã çã«ã1ã«æãæ éããŠãã·ã¹ãã å šäœã¯æ¢ãŸããªããšããææ³ã§äœãããŠãããåã«èª¬æããããã«Tofuã¯ããŒã«ã«ã°ã«ãŒãå ã®å¥ã®ããŒããŸã§ã«ãŒãã£ã³ã°ããŠXYZè»žã®æ éåæãåé¿ããããšãã§ããIOãžã®ãã¹ã®2éåããµãŒãã¹ããã»ãµã®2éåãªã©ã«ãããçæ¹ãæ éããŠãã·ã¹ãã ãšããŠã®åäœã¯å埩ã§ããããã«ãªã£ãŠããã
ãã1ã€å€§ããã®ããSPARC64 VIIIfxããã»ãµãICCã®æ°Žå·ã§ããã
ããã»ãµãICCãªã©ã®LSIã®æ éçã«ã¯ããã®å¯¿åœã¯ãžã£ã³ã¯ã·ã§ã³æž©åºŠã®ææ°é¢æ°ã§äœäžãããšããã¢ã¬ããŠã¹ã®æ³åãããããã®æ³åã«åŸãã°æž©åºŠã10床äžãããšå¯¿åœã¯çŽ2åã«ãªããšããããã®ãããéåžžã¯85âçšåºŠã§äœ¿çšããLSIãã京ã·ã¹ãã ã§ã¯30âã«æ°Žå·ããŠäœ¿çšããŠãããããã«ãããéšå寿åœã¯60åïœ100åã«äŒžã³ããã®åãæ éé »åºŠãæžå°ãããå®éã®äº¬ã¹ãã³ã³ã®æ éçã¯å®éçšã§ããŒã¿ãåããªããã°åãããªãããLINPACKã®æž¬å®ã§ã¯28æéã®é£ç¶çšŒåãå®çŸãããŠããã1ã€ã®ããŒãã§ã¯100幎ã«1åãããäœãæ éçã«ãªã£ãŠãããšèããããã
å瀟ã®SPARCããŒã¹ã®ã·ã¹ãã ã¯ãOSãšããŠSolarisã䜿ã£ãŠãããã京ã¹ãã³ã³ã§ã¯PCã¯ã©ã¹ã¿ãšã®å®è¡ç°å¢ã®çµ±äžæ§ãšLusterãã¡ã€ã«ã·ã¹ãã ãOpenMPIãªã©ã®ãªãŒãã³ãœãŒã¹ã®ãœãããŠã§ã¢ã®ç§»æ€æ§ã®ç¹ããLinuxãæ¡çšããŠãããããããå€§èŠæš¡ã¹ãã³ã³ã®éçšç®¡çç³»ã¯ããããŸã§ã®å¯å£«éã®ããŠããŠãçãããŠèªäž»éçºãšãªã£ãŠããã
ã¹ãã³ã³ã§ã¯å€æ°ã®ã³ã¢ã«ä»äºã忣ããããããŠå šãŠã®ã³ã¢ã§ã®åŠçãçµãã£ãããšã確èªããŠæ¬¡ã®ã¹ãããã«é²ãããã®çµäºã®ç¢ºèªãåæãšåŒã¶ãäžçªäžã®å³ã®ããã«å šãŠã®ããŒãã®åŠçæéãåãã§ããã°ã ãã¯çããªãããOSã®ããŒã¢ã³åŠçãªã©ã®å®è¡(æ¬æ¥ã®èšç®ä»¥å€ã®åŠçãªã®ã§ãã€ãºãšåŒãã§ãã)ãå ¥ã£ãã³ã¢ã¯åŠçã®çµäºãé ããããã«äŒŽã£ãŠä»ã®ã³ã¢ãšã®åæã¿ã€ãã³ã°ãé ããªãã
ãã®ãããªãã€ãºã®å ¥ãæ¹ã¯èšç®ãšã¯éåæã§ããã®ã§ããŸã£ããåãèšç®ãããããŠããå®è¡æéãã°ãã€ããŠããããã®ã°ãã€ãããžãã¿(Jitter)ãšããã京ã®Linuxã§ã¯ããžãã¿ãæžããããã«2ã€ã®å¯Ÿçãåã£ãŠããã1ã€ã¯ãã€ãºãšãªãåŠçãæŽãåºãããã€ãºééãçãããããã¯ç¶ç¶æéãé·ããã®ã¯OSã®ãœãŒã¹ã³ãŒããæ¹è¯ããŠééã¯200ms以äžãç¶ç¶æéã¯50us以äžã«ãªãããã«æ¹åããããã1ã€ã¯Tofuã€ã³ã¿ã³ãã¯ãã®ããŒãããªã¢æ©èœã䜿ã£ãŠãäžåŽã®å³ã«ç€ºãããã«ãå šãŠã®ã³ã¢ã§ãã€ãºã®çºçã¿ã€ãã³ã°ããããããšããæ¹åãè¡ã£ãŠããã
説æã端æã£ããã京ã¹ãã³ã³ã§ã¯ãããã»ãµå ã®8ã³ã¢ã®åæãè¡ãããŒãããªã¢æ©èœã ãã§ã¯ãªããããŒã©ã¹ã€ã³ã¿ã³ãã¯ãã«ã€ããŠããããã»ãµæ©èœã䜿çšããã«ICCã®äžã«ããªãŒäžã«åããŒãã®åŠçã®å®äºããŸãšããŠåææéãççž®ããããŒãããªã¢æ©èœãå®è£ ãããŠããã
京ã·ã¹ãã ã¯8äžããŒããè¶ ãã巚倧ãªã·ã¹ãã ã§ãããå šäœã1ã€ã®ãžã§ãã§å æããå Žåãããããå€ãã®å Žåã¯åå²ããŠäœ¿çšãããããããããšã倧ããªç®±ã®äžã«ãµã€ãºãç°ãªãå°ããªç®±ãå¹çããè©°ã蟌ããšããããšãå¿ èŠã«ãªãããã®ããã3次å 圢ç¶ãæèããã¹ã±ãžã¥ãŒã©ãéçºããééã«ãžã§ããè©°ã蟌ãããã¯ãã£ã«ãããã®æã«ãžã§ãã®XYZ軞ãå転ããŠè©°ã蟌ããªã©ã®ææ³ãçµã¿èŸŒãã§ãå¹ççã«ãžã§ããè©°ã蟌ãã§ããã
京ã¹ãã³ã³ã§ã¯ãããã°ã©ãã³ã°èšèªãšããŠã¯Fortran 2003ãCãC++ãå©çšã§ããããããŠããŒãå 䞊ååŠçã«ã¯OpenMP 3.0ããµããŒãããŠããããããŠãããŒãé䞊ååŠçãè¡ãã«ã¯XPFortranã䜿çšããããMPI 2.1ã䜿ã£ãŠæã«ããŒãéã®ããŒã¿éä¿¡ãèšè¿°ããããšã«ãªãã ç±³åœã§ã¯ãCo-Array Fortran(CAF)ãUnified Parallel C(UPC)ãªã©ã®PGAS(Partitioned Global Address Space)èšèªã䜿ã£ãŠããŒãé䞊åããã°ã©ã ã®äœæã容æã«ããæ¹åã«åãã£ãŠããçŸç¶ã§ãããŒãé䞊åããã°ã©ã ã®èšè¿°ã«åäžä»£ããã®XPFortranãããªãã®ã¯æ·ããæããããã
ããã°ã©ãã³ã°ããŒã«ã§ã¯å€æ°ããŒãã®äžã§ã®è² è·ãã©ã³ã¹ãè§£æããããTofuã®æ§èœã¢ãã¿æ©èœã䜿ã£ãéä¿¡ç¶æ³ã®ãããã¡ã€ã«ã®è¡šç€ºãããŒã©ã¹äžã§ã®ã©ã³ã¯ãããã³ã°ãèªåçã«æé©åãããããããŒã«ãªã©ãå ããŠãè¶ äžŠåã®äº¬ã·ã¹ãã ãžã®å¯Ÿå¿ãè¡ã£ãŠããã
åœå ã®ã¹ãã³ã³ã§ã1000ã³ã¢çšåºŠã®ã·ã¹ãã ã¯çžåœæ°ããããã®ã¬ãã«ã®äžŠåã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ãã§ã«è¡ãããŠãããããããè¶ ããŠ10äžã³ã¢ã«éããè¶ äžŠåã®ã¢ããªã±ãŒã·ã§ã³ã¯æªç¥ã®é åã§ããã京ã¹ãã³ã³ã®ã·ã³ã°ã«ã³ã¢ã§ã®ã¢ããªã±ãŒã·ã§ã³å®è¡æ§èœãããŒããã¢ã§ã®éä¿¡æ§èœãªã©ã¯äºå®ããæ§èœãåºãŠããããæ¬åœã®è¶ 䞊åã§ã®ã¢ããªã±ãŒã·ã§ã³ã®æ§èœçºæ®ã¯ããããã®ãã¥ãŒãã³ã°ã«ããã£ãŠããã
è¬æŒã§ç€ºãããæ¬¡ã®ã°ã©ãã§ã¯1,024ã³ã¢ãã65,536ã³ã¢ãšããŒãæ°ã64åã«å¢ãããæããã©ããMPIã§ã¯6ååŒ·ã§æ§èœã飜åãããã€ããªããMPIã§ã¯11å匱ã§ãããããã«Tofuã®ããŒããŠã§ã¢ããªã¢æ©æ§ãçµã¿åããããš16å匷ãŸã§æ§èœãåäžããŠããããã®ç¹ã§ã¯äº¬ã·ã¹ãã ã§å°å ¥ãããã€ããªããMPIãTofuã®ããŒããŠã§ã¢ããªã¢æ©æ§ã¯4,096ããŒã以äžã§ã¯å¹æãçºæ®ããŠãããšèšãããããããæè¯ã®æ¡ä»¶ã§ã64åã®ããŒãæ°ã§æ§èœã¯16åçšåºŠã«ããäžãã£ãŠããããè¶ äžŠåã·ã¹ãã ã§é«æ§èœãå®çŸããã«ã¯å€§ããªææŠãæ®ã£ãŠãããšããæãã§ããã





