GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

GPUでコンピュータ将棋を動かす場合の問題点

 について考えているんですが、「シリアルコードの実行が遅い」って一点に尽きると思うんですよ。

 よく「GeForceは240コア*1」とか書かれていますが、正確に書くと間違いで「スカラパイプが8個のコアが30個」が正解(だと思います)。

 問題は8個のスカラパイプが4クロックにわたって同じ命令を実行する必要があるので、CPU的な書き方をするとGeForceは高々数百MHz動作の30コアプロセッサという事に成ります。

 んで、30スレッド*2での並列探索の問題はとりあえず置いといて、探索と評価関数の両方をGPUで動かす場合のチャレンジは「いかにして並列化コードの比率を高めるか」に尽きると思います。

 例えばムチャクチャ重い評価関数+浅い探索なら、評価関数さえ並列化すればそこそこ性能出るとは思いますが、問題は重くした評価関数がそれに見合った精度があるかどうか、ってのも問題。

 私ならニューロ評価関数に静止探索相当の動作も担当してもらうって手を考えますが、他の手(例えば4駒の関係を全部評価する)もありそうで、何がベストかは分かりません。

 何を良いたいかと言うと、既存のコンピュータ将棋をそのままGPUで動かしても速くならないと思いますので、CUDAで作った人がどういう設計をしたのか、どれだけの性能を出せてるのかに興味津々、って事です。あー、速く5月にならないかな〜。

*1:GeForce GTX 285の場合

*2:GPU的に言うとこの書き方は間違いなのですが、とりあえずCPUにあわせてこう書きます