ãããã°ã©ã ã®é床ãèœãšãã®ã¯ãã³ã³ãã¥ãŒã¿ãŒãé«éåãããããã¯ããã«é«éã§ãã
ãã以æ¥ããã®å£°æã¯ã¯ãŒã¹ã®æ³åãšèŠãªãããŠããŸãããããã¯ãããã»ããµå ã®ãã©ã³ãžã¹ã¿ã®æ°ã1965幎é ãã2åã«ãªã£ããšããã ãŒã¢ã®æ³åãäºå®äžåŠå®ããŸããWirthãèšäºã CallforSlimSoftware ãã«æžããŠããããšã¯æ¬¡ã®ãšããã§ãã
ãçŽ25幎åãã€ã³ã¿ã©ã¯ãã£ããªããã¹ããšãã£ã¿ã¯ããã8000ãã€ãã§ãã³ã³ãã€ã©ã¯32ãããã€ãã§ããããæè¿ã®åå«ã¯ã¡ã¬ãã€ããå¿ èŠãšããŸãããã®è¥å€§åãããœãããŠã§ã¢ã¯ãã¹ãŠéããªããŸãããïŒãããããŸã£ããéã§ãã1000åé«éãªããŒããŠã§ã¢ããªããã°ãææ°ã®ãœãããŠã§ã¢ã¯å®å šã«äœ¿çšã§ããªããªããŸããã
ããã«ç°è°ãå±ããã®ã¯é£ããã
è¥æºãœãããŠã§ã¢
ææ°ã®ãœãããŠã§ã¢ãéçºããéã®åé¡ã¯éåžžã«æ·±å»ã§ããã¯ãŒã¹ã¯1ã€ã®éèŠãªåŽé¢ãææããŠããŸãïŒæéã圌ã¯ãè¥å€§åãããœãããŠã§ã¢ã®äž»ãªçç±ã¯éçºæéã®äžè¶³ã§ãããšç€ºåããŠããŸãã
仿¥ããœãããŠã§ã¢ã®è¥æºã«ã¯å¥ã®çç±ããããŸããããã¯æœè±¡åã§ãããããŠãããã¯ã¯ããã«æ·±å»ãªåé¡ã§ããéçºè ãæåããããã°ã©ã ãäœæããããšã¯ãããŸãããããããåé¡ã«ãªãããšã¯ãããŸããã
DijkstraãšWirthã¯ãã³ãŒãã®åè³ªãæ¹åããããšããæ§é åããã°ã©ãã³ã°ã®æŠå¿µãéçºããŸããã圌ãã¯å±æ©ããããã°ã©ãã³ã°ãåãé€ãããšããŸããããããŠãã°ããã®éãããã°ã©ãã³ã°ã¯æ¬åœã®å°éå®¶ã®ããã®æ¬åœã®æè¡ãšããŠèŠãããŸãããããã°ã©ããŒã¯ããã°ã©ã ã®åè³ªã«æ°ãé ããã³ãŒãã®æå¿«ããšå¹çãé«ãè©äŸ¡ããŸããã
åœæã¯çµãããŸããã
JavaãRubyãPHPãJavascriptãªã©ã®é«ã¬ãã«èšèªã®å°é ã«ãããWirthãèšäºãæžãã1995幎ãŸã§ã«ãããã°ã©ãã³ã°ã¯ããæœè±¡çãªãã®ã«ãªããŸãããæ°ããèšèªã¯ããã°ã©ãã³ã°ãã¯ããã«ç°¡åã«ããå€ãã®ããšãåŒãåããŸããããããã¯ãªããžã§ã¯ãæåã§ãããIDEãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªã©ã«ãã³ãã«ãããŠããŸããã
ããã°ã©ããŒã¯ç掻ãããããªããŸãããããã¹ãŠã®è²»çšãæ¯æãå¿ èŠããããŸããäœã¿ãããã»ã©ãèããããšã¯å°ãªããªããŸãã 90幎代åã°é ãããã°ã©ããŒã¯ããã°ã©ã ã®å質ã«ã€ããŠèããã®ããããéçºè ã®ããã³ã»ããŒãã£ã³ã¯åœŒã®èšäºããã¯ã©ãŠã¹ã»ã¯ãŒã¹ã¯æ£ããã£ãããããåé¡ã ããšæžããŠããŸããåæã«ãã©ã€ãã©ãªã®æ®åãå§ãŸãããã®æ©èœã¯åžžã«ç¹å®ã®ããã°ã©ã ã«å¿ èŠä»¥äžã®ãã®ã«ãªã£ãŠããŸãã
ã©ã€ãã©ãªã¯ç¹å®ã®ãããžã§ã¯ãçšã«æ§ç¯ãããŠããªããããå®éã«å¿ èŠãªæ©èœãããå°ãå€ãã®æ©èœãåããŠããå¯èœæ§ããããŸããåé¡ãããŸãããããªãã¯èšããŸãããã ããç¶æ³ã¯ããã«å ç®ãããŸãã峿žé€šãæãã人ã ã§ãããè»èŒªãåçºæããããããŸãããããã¯ãããããäŸåå°çã«ã€ãªãããŸãã Nicola Duzaã¯ããã®åé¡ã«é¢ããæçš¿ãJavascriptã§äœæããŸããã
åé¡ã¯å€§ããããšã§ã¯ãªãããã«èŠããŸãããå®éã«ã¯ããªããæã£ãŠãããããæ·±å»ã§ããããšãã°ãNikolaDusaã¯ç°¡åãªããããšãªã¹ãã¢ããªãäœæããŸããã HTMLãšJavascriptã䜿çšããŠãã©ãŠã¶ã§åäœããŸããããã€ã®äŸåé¢ä¿ã䜿çšããããšæããŸããïŒ 13,000ã13ãåã蚌æã
æ°åã¯éåžžèã§ãããåé¡ã¯æ¡å€§ããã ãã§ããæ°ããã©ã€ãã©ãªãäœæããããšãåãããžã§ã¯ãã®äŸåé¢ä¿ã®æ°ãå¢å ããŸãã
ããã¯ã1995幎ã«NiklausWirthãèŠåããåé¡ãæéã®çµéãšãšãã«æªåããããšãæå³ããŸãã
äœããã¹ããïŒ
ããã³ã»ããŒãã£ã³ã¯ãå§ããããã®è¯ãæ¹æ³ã¯ã©ã€ãã©ãªãåå²ããããšã§ãããšææ¡ããŠããŸããæåãå°œãã1ã€ã®å€§ããªã©ã€ãã©ãªãæ§ç¯ãã代ããã«ãå€ãã®ã©ã€ãã©ãªãäœæããã ãã§ãã
ãããã£ãŠãããã°ã©ããŒã¯ã䜿çšããªãæ©èœãç¡èŠããŠãæ¬åœã«å¿ èŠãªã©ã€ãã©ãªãŒãéžæããã ãã§æžã¿ãŸããã€ã³ã¹ããŒã«ããäŸåé¢ä¿èªäœãå°ãªããªãã ãã§ãªãã䜿çšãããã©ã€ãã©ãªã®äŸåé¢ä¿ãå°ãªããªããŸãã
ã ãŒã¢ã®æ³åã®çµãã
æ®å¿µãªããããã©ã³ãžã¹ã¿ã®å°ååã¯æ°žé ã«ç¶ãããšã¯ã§ãããç©ççãªéçããããŸããããããé ããæ©ãããã ãŒã¢ã®æ³åã¯æ©èœããªããªãã§ããããããã¯ãã§ã«èµ·ãã£ãŠãããšèšã人ãããŸããéå»10幎éã§ãåã ã®ããã»ããµã³ã¢ã®ã¯ããã¯é床ãšé»åã¯ã以åã®ããã«ãã§ã«æé·ã忢ããŠããŸãã
圌ãåè¬ããã«ã¯ææå°æ©ã§ãããã·ãªã³ã³ãã€ã¯ããšã¬ã¯ãããã¯ã¹ã«åã£ãŠä»£ããããšãçŽæããå€ãã®æ°ããæè¡ããããŸããããšãã°ãIntelãSamsungãããã³ãã®ä»ã®äŒæ¥ã¯ãã«ãŒãã³ããæ§é ïŒããã¯ã€ã€ãŒïŒã«åºã¥ããã©ã³ãžã¹ã¿ãŒããã©ãããã¯ããããå®éšããŠããŸãã
ãã©ã³ãžã¹ã¿ã®é²åãã€ã©ã¹ãïŒãµã ã¹ã³
ããããäžéšã®ç ç©¶è ã¯ç°ãªãã¢ãããŒããæ¡çšããŠããŸãã圌ãã¯ãå°æ¥ã®ãœãããŠã§ã¢ã®å¹çãåçã«æ¹åããããã®ããã°ã©ãã³ã°ãžã®æ°ããã·ã¹ãã ã¢ãããŒããææ¡ããŠããŸãããããã£ãŠãããã°ã©ã ã®è¥æºã«é¢ããNicklaus Wirthã®èгå¯ã«ç §ãããŠãã ãŒã¢ã®æ³åãã©ãã»ã©çŽ æŽãããèãããŠããããã°ã©ã ã®æ¹æ³ã«ãã£ãŠã ãŒã¢ã®æ³åããåéãããããšãå¯èœã§ãããããããã®åŸåãé転ãããããšãã§ãããã©ãã§ããããïŒ
ãœãããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãã¯ããã¯
æè¿ãScienceã¯ãããµãã¥ãŒã»ããå·¥ç§å€§åŠïŒCSAIL MITïŒã®ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ããã³äººå·¥ç¥èœç ç©¶æã®ç§åŠè ã«ããè峿·±ãèšäºãçºè¡šããŸããããããã¯ãèšç®ãããã«å éããããã®3ã€ã®åªå åéã匷調ããŠããŸãã
- æé«ã®ãœãããŠã§ã¢ã
- æ°ããã¢ã«ãŽãªãºã ;
- ããæé©åãããããŒããŠã§ã¢ã
ç§åŠçç ç©¶ã®çé èè ã§ããCharlesLeisersonã¯ããœãããŠã§ã¢è«æã®è¥æºã確èªããŠããŸãã圌ã¯ããã©ã³ãžã¹ã¿ãå°ååããããšã®å©ç¹ã¯éåžžã«å€§ãããããããã°ã©ããŒã¯äœå幎ãã®éãå®è¡ãé«éåããã®ã§ã¯ãªããã³ãŒããæžããããããããšãåªå ããããšãã§ãããšèšããŸããããé«éãªã³ã³ãã¥ãŒã¿ãŒããããåžžã«ãœãããŠã§ã¢ã®è¥æºãè£ããããéå¹çæ§ã¯èš±å®¹ã§ããŸãã
ããããã仿¥ã§ã¯ãæ©æ¢°åŠç¿ãããããå·¥åŠãä»®æ³çŸå®ãªã©ã®åéã§ã®ãããªã鲿©ã«ã¯ãå°ååã§ã¯ãã¯ãæäŸã§ããªãèšå€§ãªèšç®èœåãå¿ èŠã«ãªããŸãããšLeisersonæ°ã¯èšããŸãã ããããã®ãã¯ãããžãŒã®å¯èœæ§ãæå€§éã«æŽ»çšãããã®ã§ããã°ãã³ã³ãã¥ãŒãã£ã³ã°ãžã®ã¢ãããŒããå€ããå¿ èŠããããŸããã
ãœãããŠã§ã¢ã®éšåã§ã¯ããããéå¹çã®åå ã§ãããããéå°ãªæ©èœãåããã©ã€ãã©ãªã䜿çšããæŠç¥ã忀èšããããšãææ¡ãããŠããŸããèè ã¯ãã³ãŒãã®èšè¿°é床ã§ã¯ãªããããã°ã©ã å®è¡ã®é床ãäžãããšããã¡ã€ã³ã¿ã¹ã¯ã«éäžããããšãæšå¥šããŠããŸãã
å€ãã®å Žåãããã©ãŒãã³ã¹ã¯å®éã«äœååãåäžããå¯èœæ§ããããããã¯èªåŒµã§ã¯ãããŸãããäŸãšããŠãç ç©¶è ã¯2ã€ã®4096Ã4096è¡åã®ä¹ç®ãåŒçšããŠããŸãã圌ãã¯ãæã人æ°ã®ããé«ã¬ãã«èšèªã®1ã€ãšããŠPythonãå®è£ ããããšããå§ããŸãããããšãã°ãPython2ã§ã®4è¡ã®å®è£ ãæ¬¡ã«ç€ºããŸãã
for i in xrange(4096):
for j in xrange(4096):
for k in xrange(4096):
C[i][j] += A[i][k] * B[k][j]
ã³ãŒãã«ã¯3ã€ã®ãã¹ããããã«ãŒããããããœãªã¥ãŒã·ã§ã³ã¢ã«ãŽãªãºã ã¯åŠæ ¡ã®ä»£æ°ã«ãªãã¥ã©ã ã«åºã¥ããŠããŸãã
ãããããã®çŽ æŽãªã¢ãããŒãã¯ãèšç®èœåã«ã¯éå¹ççã§ããããšãããããŸãããæ¬¡ã®è¡šã«ç€ºãããã«ãææ°ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãçŽ7æéå®è¡ãããŸãã
| ããŒãžã§ã³ | å®è£ | å®è¡æéïŒç§ïŒ | GFLOPS | 絶察å é | çžå¯Ÿå é床 | ããŒã¯ããã©ãŒãã³ã¹ã®ããŒã»ã³ããŒãž |
|---|---|---|---|---|---|---|
| 1 | Python | 25552.48 | 0.005 | 1 | - | 0.00 |
| 2 | Java | 2372.68 | 0.058 | åäž | 10.8 | 0.01 |
| 3 | C | 542.67 | 0.253 | 47 | 4.4 | 0.03 |
| 4 | 䞊åã«ãŒã | 69.80 | 1.97 | 366 | 7.8 | 0.24 |
| äº | ãã©ãã€ã ãåå²ããŠåŸæãã | 3.80 | 36.18 | 6727 | 18.4 | 4.33 |
| 6 | +ãã¯ãã«å | 1.10 | 124.91 | 23224 | 3.5 | 14.96 |
| 7 | + intristics AVX | 0.41 | 337.81 | 52806 | 2.7 | 40.45 |
ããå¹ççãªããã°ã©ãã³ã°èšèªãžã®ç§»è¡ã«ãããã³ãŒãå®è¡ã®é床ããã§ã«åçã«åäžããŠããŸããããšãã°ãJavaããã°ã©ã ã¯Javaãã10.8åéãå®è¡ãããCããã°ã©ã ã¯Javaããããã«4.4åéãå®è¡ãããŸãããããã£ãŠãPythonããCã«åãæ¿ãããšãããã°ã©ã ã®å®è¡ã47åéããªããŸãã
ãããŠãããã¯æé©åã®å§ãŸãã«ãããŸãããå®è¡ãããããŒããŠã§ã¢ã®ç¹æ§ãèæ ®ããŠã³ãŒããäœæãããšãé床ãããã«1300åã«ããããšãã§ããŸãããã®å®éšã§ã¯ãã³ãŒãã¯æåã«18åã®CPUã³ã¢ãã¹ãŠïŒããŒãžã§ã³4ïŒã§äžŠè¡ããŠå®è¡ãããæ¬¡ã«ããã»ããµãã£ãã·ã¥éå±€ïŒããŒãžã§ã³5ïŒã䜿çšãããã¯ãã«åïŒããŒãžã§ã³6ïŒã远å ããããŒãžã§ã³7ã§ç¹å®ã®Advanced Vector ExtensionsïŒAVXïŒåœä»€ãé©çšããŸãããææ°ã®æé©åããŒãžã§ã³ã³ãŒãã®æèŠæéã¯ããã0.41ç§ã§ã7æéã§ã¯ãããŸãããã€ãŸããå ã®Pythonã³ãŒãã®60,000å以äžé«éã§ãã
ããã«ãAMD FirePro S9150ã°ã©ãã£ãã¯ã«ãŒãã§ã¯ãåãã³ãŒããããã70ããªç§ã§å®è¡ãããæ±çšããã»ããµã§æãæé©åãããããŒãžã§ã³7ã®5.4åãããŒãžã§ã³1ã®360,000åé«éã§ãã
ã¢ã«ãŽãªãºã ã®èгç¹ãããç ç©¶è ã¯ãæ°ããåé¡é åã®èª¿æ»ãã¢ã«ãŽãªãºã ã®ã¹ã±ãŒãªã³ã°ãããã³ææ°ã®ããŒããŠã§ã¢ãããæå¹ã«æŽ»çšããããã®ãããã®é©å¿ãå«ã3ã€ã®ã¢ãããŒããææ¡ããŸãã
ããšãã°ããããªãã¯ã¹ãããã«10ïŒ ä¹ç®ããStrassenã®ã¢ã«ãŽãªãºã ã¯ãã³ãŒãçªå·7ã®æéããŒãžã§ã³ãé«éåããŸããä»ã®åé¡ã«ã€ããŠã¯ãæ°ããã¢ã«ãŽãªãºã ã«ãã£ãŠããã«ããã©ãŒãã³ã¹ãåäžããŸããããšãã°ã次ã®å³ã¯ã1975幎ãã2015幎ã®éã«æå€§ãããŒã®åé¡ã解決ããããã®ã¢ã«ãŽãªãºã ã®å¹çã®åäžã瀺ããŠããŸããæ°ããã¢ã«ãŽãªãºã ã¯ãããããæåéãæ°æ¡ã®èšç®é床ãåäžããããã®åŸæ°å¹Žã§ããã«æé©åãããŸããã
N = 10ã§ã°ã©ãäžã®æå€§æµéã®åé¡ã解決ããããã®ã¢ã«ãŽãªãºã ã®å¹ç12ã®é ç¹ãšM = N 11ã®çž
ãããã£ãŠãã¢ã«ãŽãªãºã ãæ¹åããããšãã ãŒã¢ã®æ³åããããã°ã©ã ããšãã¥ã¬ãŒããã«å¯äžããã
æåŸã«ãããŒããŠã§ã¢ã¢ãŒããã¯ãã£ã®èгç¹ãããç ç©¶è ã¯ããŒããŠã§ã¢ãæé©åããŠãããå°ãªããã©ã³ãžã¹ã¿ã§åé¡ã解決ã§ããããã«ããããšãæå±ããŠããŸããæé©åã«ã¯ãããåçŽãªããã»ããµã®äœ¿çšãšãGPUãã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ã«é©åããŠãããªã©ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«åãããããŒããŠã§ã¢ã®äœæãå«ãŸããŸãã
ãç¹å®ã®é åã«åãããæ©åšã¯ãã¯ããã«å¹ççã§ã䜿çšãããã©ã³ãžã¹ã¿ãã¯ããã«å°ãªããããã¢ããªã±ãŒã·ã§ã³ãæ°ååãŸãã¯æ°çŸåéãå®è¡ã§ããŸãããšãç ç©¶è«æã®å ±èè ã§ããTaoSchardlæ°ã¯è¿°ã¹ãŠããŸãã ãããäžè¬çã«ã¯ãããŒããŠã§ã¢ã®æé©åã¯ã䞊å䜿çšã®ããã«ãããäžã«è¿œå ã®é åãäœæããããšã«ããã䞊åããã°ã©ãã³ã°ãããã«åºæ¿ããŸããã
䞊ååã®åŸåã¯ãã§ã«èŠãããŸããå³ã«ç€ºãããã«ãè¿å¹Žãã³ã¢æ°ã®å¢å ã ãã§CPUæ§èœãåäžããŠããŸãã
1985幎ãã2015幎ãŸã§ã®åã ã®ã³ã¢ãšã·ã³ã°ã«ããã³ãã«ãã³ã¢ããã»ããµã®SPECintããã©ãŒãã³ã¹ãããŒã¹ãŠãããã¯198580386DXãã€ã¯ãããã»ããµã§ã
ããŒã¿ã»ã³ã¿ãŒã®éå¶è ã«ãšã£ãŠããœãããŠã§ã¢ã®ããã©ãŒãã³ã¹ã®ããããªæ¹åã§ããã倧ããªçµæžçå©çã«ã€ãªããå¯èœæ§ããããŸããåœç¶ã®ããšãªãããGoogleãAmazonãªã©ã®äŒæ¥ã¯çŸåšãç¬èªã®å°çšCPUãéçºããããã®ã€ãã·ã¢ãããäž»å°ããŠããŸããæåã«ãªãªãŒã¹ãããGoogleTPUãã³ãœã«ïŒãã¥ãŒã©ã«ïŒããã»ããµãšAWSGravitonããããAmazonããŒã¿ã»ã³ã¿ãŒã§å®è¡ãããŠããŸãã
æéã®çµéãšãšãã«ãå¹çã§ç«¶åä»ç€Ÿã«è² ããªãããã«ãæ¥çã®ãªãŒããŒã«ä»ã®ããŒã¿ã»ã³ã¿ãŒã®ææè ãç¶ãå¯èœæ§ããããŸãã
ç ç©¶è ã¯ãéå»ã«ãæ±çšããã»ããµã§ã®ççºçãªããã©ãŒãã³ã¹ã®åäžããç¹æ®ãªããã»ããµã®éçºã®ç¯å²ãå¶éããŠãããšæžããŠããŸããçŸåšããã®ãããªå¶éã¯ãããŸããã
ç ç©¶ã®å ±èè ã§ãããã£ãŒã«ãºã»ã©ã€ã¶ãŒãœã³ææã¯ã次ã®ããã«è¿°ã¹ãŠããŸãã ãããã¯ãŸããããã°ã©ããŒããœãããŠã§ã¢ãã¢ã«ãŽãªãºã ãããŒããŠã§ã¢ãåå¥ã«èŠãã®ã§ã¯ãªããããããã©ã®ããã«çµã¿åããããŠããããããããçè§£ããå¿ èŠãããããšãæå³ããŸããã
äžæ¹ããšã³ãžãã¢ã¯CPUããã©ãŒãã³ã¹ãããã«åäžãããããšãã§ãããã¯ãããžãŒãå®éšããŠããŸãããããã¯ãéåã³ã³ãã¥ãŒãã£ã³ã°ã3Dã¬ã€ã¢ãŠããè¶ äŒå°ãã€ã¯ãåè·¯ããã¥ãŒãã¢ãŒãã£ãã¯ã³ã³ãã¥ãŒãã£ã³ã°ãã·ãªã³ã³ã®ä»£ããã«ã°ã©ãã§ã³ã䜿çšããããšãªã©ã§ãããããããããŸã§ã®ãšããããããã®ãã¯ãããžãŒã¯å®é𿮵éã«ãããŸãã
CPUã®ããã©ãŒãã³ã¹ãå®éã«åäžããªããªã£ãå Žåãç§ãã¡ã¯ãŸã£ããç°ãªãçŸå®ã«çŽé¢ããããšã«ãªããŸãããããããç§ãã¡ã¯ããã°ã©ãã³ã°ã®åªå é äœãæ¬åœã«åèããå¿ èŠããããã¢ã»ã³ãã©ãŒã®ã¹ãã·ã£ãªã¹ãã¯éã§åœŒãã®éã¿ã®äŸ¡å€ãããã§ãããã
åºå
匷åãªãµãŒããŒã å¿ èŠã§ããïŒåœç€Ÿã¯ãAMD EPYC CPUãæå€§3.4GHzã®CPUã³ã¢åšæ³¢æ°ãåããä»®æ³ãµãŒããŒã§ãã壮倧ãªãµãŒããŒãæäŸããŠããŸããæå€§æ§æã¯èª°ã«ã§ãå°è±¡çã§ã-128CPUã³ã¢ã512 GB RAMã4000 GBNVMeã
