æåã«
æ¬èšäºã¯ã䞊ååŠçãã«ã€ããŠå°ãæãäžãã解説èšäºãšãªããŸãã
ããã»ã¹ã«ã€ããŠã¯âãå°ãã¿ãããã»ã¹ã£ãŠãªãã ããïŒãšãã話
ã¹ã¬ããã«ã€ããŠã¯âãå°ãã¿ãã¹ã¬ããã£ãŠãªãã ããïŒãšãã話
éåæã«ã€ããŠã¯âUnityéåæå®å
šã«çè§£ããããã®ç¬¬äžæ©ïœéåæåŠçãšã¯äœãïœ
䞊è¡åŠçãšã¯ïŒ
䞊è¡åŠçãšã¯ãè€æ°ã®ããã»ã¹ãå®è¡å¯èœç¶æ ã§ããããšã§ãå®éã«ã¯åæã«ããã»ã¹ãåããŠããªããŠããŠãŒã¶ãŒåŽããä»»æã§åãæ¿ããè¡ããŸãã人éã®ç®ã«ã¯åæã«åŠçãè¡ãããŠããããã«èŠããŸããããã«ãã¿ã¹ã¯OSã§ã¯ã·ã³ã°ã«ã³ã¢ã§åããã»ã¹ãããç§ããšã®ã¿ã€ã ã¹ã©ã€ã¹ã§åºåã£ãŠé«éã«åãæ¿ããªããïŒåŠçãã€è¡ãªã£ãŠããã®ã§ãã
䞊ååŠçãšã¯ïŒ
䞊ååŠçãšã¯ãèšç®åŠçç³»ãªã©ã®æ¯èŒçå°ãããŠç¬ç«ããåŠçãå¥ã ã®ã³ã¢ã§å®è¡ããäºã§è€æ°ã³ã¢ãæã€ããŒããŠã§ã¢ã®ããã©ãŒãã³ã¹ãåŒãåºãããã®ææ³ãšãªããŸãã
ãã®æ©èœãåããŠããã®ãUnityã§ããã°ãC# Job SystemããšãªããŸãã
䞊åå®è¡ã§ã¯ã·ã¹ãã èªäœã«ãã«ãã³ã¢ããã»ããµãå¿ èŠãšãªããŸããã€ãŸãããã«ãã¹ã¬ããããã«ãããã»ã¹ãé§äœ¿ããã¢ããªãéçºãããšããŠããã«ãã³ã¢ã·ã¹ãã ã§ãªãå Žåã«ã¯äžŠåã«ã¯å®è¡ã§ããŸããã
ã§ã䞊ååŠçãšäžŠè¡åŠçã£ãŠçµå±ã©ãéãã®ïŒ
䞊è¡åŠçã¯1ã€ã®ã³ã¢ã§åããã»ã¹ãé«éã«åãæ¿ããŠïŒåŠçãã€è¡ãªã£ãŠãããšæžããŸãããã
ããã«æ¯ã¹ãŠäžŠååŠçã¯å®éã«è€æ°ã®ã³ã¢ã§åæã«åŠçãè¡ãªã£ãŠããããšãæããŠããŸãã
䞊è¡åŠçã§ã¯1ã€ã®ã³ã¢ã«è² è·ããããäœæ¥ãšãªããŸããã䞊ååŠçã¯ããããã®ã³ã¢ãããããã®åŠçãå šåã§è¡ããããªæãã§ãã
ã¡ãªã¿ã«éåæã¯ããã®äºã€ãšã¯çŽæ¥çã«é¢ä¿ããæŠå¿µã§ã¯ãããŸãããéåæã¯ã¡ã€ã³ã¹ã¬ãããæ¢ããã«å¥ã®åŠçãè¡ãããã®ææ³ã§ããããããå®çŸããæ¹æ³ãšããŠäžŠååŠçã»äžŠè¡åŠçã©ã¡ãããããããšãã§ããŸãã䞊è¡ã®å Žåã¯å³å¯ã«ã¯æ°ããç§çšåºŠã¯ã¡ã€ã³ã®åŠçãæ¢ãŸããããããŸãããããŠãŒã¶ãŒããèŠããšãã«ã¯åæ¢ããŠããããã«èŠãããå¥ã®åŠçãè¡ããŠããããã«èŠããŠãããããéåæãšèšã£ãŠãè¯ããšãããŠããŸãã
ãã¥ã¢ã«ã³ã¢ã®ç«¯æ«ãšãã¯ïŒ
PCã®ãã¥ã¢ã«ã³ã¢ãšèšãã®ã¯1åã®CPUã«2åã®ã³ã¢ãååšããããã䞊ååŠçãå¯èœã§ããã³ã¢æ°ãäºåã«ãªãã°ãåäœæéã®ãã¡ã«äºåã®ä»äºãã§ããããã°ã©ã ãçµãããšã§åŠçé床ãäºåã«ãããããå¯èœæ§ããããŸãã
ãã®å®è£ æ¹æ³ãšããŠãäžã€ã¯æŒç®åšãè€æ°çœ®ããŠåäžåœä»€ã§äžŠåã«èšç®ãè¡ãããæ¹æ³ã§ãããã®æ¹æ³ã¯è€æ°ã®ããŒã¿ã䞊åã«åŠçãããã®ã§ããŒã¿äžŠåãšåŒã°ããŠããŸããããã¯SIMD(Single Instruction Multiple Data)ãšèšãçš®é¡ã®åœä»€ã»ãããCPUã§æäŸãããŠããããå¯èœãšãªããŸãã
ããäžã€ã®å®è£ æ¹æ³ã¯ãã¹ã¬ãã䞊åã§ããããã¯è€æ°ã®æŒç®åšãèµ·ããåæŒç®åšã¯äžã€ã®ã¹ã¬ãããå®è¡ããŸããã€ãŸãåã¹ã¬ãããäžã€ã®ä»äºãæ åœããè€æ°ã®ã¹ã¬ããã䞊åã«å®è¡ããæ¹æ³ã§ããçŸåšã®å€ãã®GPUãæ¡çšããŠããSIMTæ¹åŒã¯ãã¹ã¬ãã䞊åã®å®è¡ãè¡ããŸãã
䞊åããã°ã©ã ã®åãåãæ¹
äžããé çªã«åŠçãè¡ã(鿬¡)ããã°ã©ã ã®ãœãŒã¹ããåãåºããåŠçãããã®ã§ããã°ããããã¹ã¬ããïŒãŸãã¯é£æºããŠåäœããããã»ã¹ïŒãžå²ãåœãŠãããšãã§ããŸãããã ããã¢ããªã±ãŒã·ã§ã³å ã®åŠçå šãŠãç¬ç«ããŠããããã§ã¯ãªãã®ã§ã䞊åããã°ã©ã ã«ã鿬¡å®è¡éšåã¯æ®ããŸããåŠçãã¹ã¬ããã«å²ãåœãŠãããã«ã¯ãã¹ã¬ãããå®è£ ããã©ã€ãã©ãªçãå¿ èŠãšãªããŸãã
䞊ååŠçã®æŽå²
2005幎以éã®ãã«ãã³ã¢ãã€ã¯ãããã»ããµæä»£ãæ¥ãäºã«ãã£ãŠã䞊åã®æŠå¿µãéçºã®ç¶æ³ãå€ããŠãããŸãããC++ãæšæºã©ã€ãã©ãªã«äžŠåããã°ã©ãã³ã°ããµããŒãããæ©èœãæã£ãŠããŸããC++11ã§ã¯mutexãªã©ã®çžäºæä»åŠçãå®çŸããããŒã¹éšåã®æ©èœãåãã£ãŠããŸããããC++17ãã䞊è¡äžŠåã®æ°ããSTLã远å ãããŸãã ããã«ããã䞊ååãã³ã³ãã€ã©ã«äžžæãã§ããããã«ãªãã坿¬æ§ãäžããããã«ãªããŸãã
çŸä»£ã®CPUã¯ãã€ãã©ã€ã³åãããŠãããè€æ°ã®åœä»€ãåæã«ãå®è¡äžãã«ãªãããšãå¯èœã§ãããŸããGPUã¯æ¬è³ªçã«å€§èŠæš¡ãªèšç®ãšã³ãžã³ã§ããããã幟åãã®èšç®ã䞊ååŠçã§å®è¡ããããšãå¯èœã§ããCPUã®ããã©ãŒãã³ã¹ãæ¹è¯ãããCPUã®èšç®é床ã¯ã¡ã¢ãªã«ã¢ã¯ã»ã¹ããã¹ããŒãããããã£ãšæ©ããªãã€ã€ãããŸãããªã®ã§çŸåšã®CPUã¯ããŸãããšã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ã«ãã£ãŠçºçããã¬ã€ãã³ã·ãåæžãããããªããšãè¡ãªã£ãŠãããŸãã
åè
- ã²ãŒã ãšã³ãžã³ã¢ãŒããã¯ãã£(æç®)
- GPUãæ¯ããæè¡(æç®)
- ã€ã±ãŠããšã³ãžãã¢ã«ãªããã·ãªãŒãº ãã¡ã¢ãªãšããã»ã¹ãšã¹ã¬ããç·šã

