Parallellaによるコンピューター将棋の開発

Parallellaという16/64コアの並列コンピューティング向けのプラットフォームが発表(発売)されました。16コア版が$99、64コア版は$199(予定)で手に入るようです。


Adapteva公式
http://www.adapteva.com/


RISCチップでそれぞれのコアは1GHz程度で動作しているようです。OpenCLでプログラムをすることも出来ます。ただOpenCLですと並列化に向かないような処理をさせる場合には最大限の能力は発揮できないでしょう。アーキテクチャマニュアルを見る限り、もう少し細かい並列化も可能のように思えます。


ちなみに、128×128の行列の掛け算は16コア版で2ms以下で終わるそうです。つまり128×128×128回(=2^(7*3)=2M回)の掛け算と足し算が2ms以下ということで1秒間に1G回以上の掛け算と足し算が出来るということですね。アドレッシングに数命令かかり、ループ変数のインクリメント、ループの終了判定〜ジャンプにも2,3命令かかることを考慮しますと、そこそこ速いのではないでしょうか。


アーキテクチャマニュアルを見る限り、コア間はeMesh(TM)で接続されているそうです。ぱっと見た感じ、コアごとに(x,y)のような二次元座標みたいな番地が振ってあって、バケツリレーで運ぶように見えますが、よくわかりません。メモリアクセスがもっとボトルネックになるのかと思ったら、行列の掛け算の例から察するに、結構の性能が出るんだなーというのが正直なところです。


まあ、16コア版でもIntelのハイエンドCPUの1コアの3倍ぐらいの処理が出来るでしょうから、64コア版ですと、10倍ぐらいの処理はできるのではないでしょうか。コンピューター将棋の並列探索の効率が√N程度だと仮定しますと、シングルコアの10倍の速度で探索が出来るならばそれは100コア相当という計算になり、なかなか夢が広がりますね。


それでまあこのParallellaのようにコア間の通信コストが極めて小さい場合、実質的にシングルスレッドで高速に探索させることが可能だと思うのですが、そのためには評価関数は時間がかかるものであればあるほど得だというのはあります。


たとえば、BonanzaGPS将棋の評価関数ではBonanzaのほうが3倍ぐらい評価関数は軽いですが(正確に比較したことはありません)、その分たくさん探索できるので、総合的な棋力としてはGPS将棋と互角ぐらいに落ち着きます。


つまり、これがほぼ互角だとしますと、評価関数を重くしてその代わりに探索速度を低下させてもBonanzaGPS将棋と互角ぐらいになる評価関数も設計できるはずです。こうして評価関数をどんどん時間のかかるものにしていこうと考えます。


そうして行きますと計算に非常に時間がかかる(だけど精度は良い)評価関数が出来上がるわけですが、このように重い評価関数のほうが、Parallellaのようなコア間の通信コストが極めて小さいプラットフォームでは評価関数の計算をする部分を並列化したときの並列化効率が良いことになります。


そもそも評価関数以外の部分、たとえば指し手生成を並列化すると言いましてもそんなにたいした並列化はできません。むしろ、Parallellaの場合、動作クロックが低い分、普通のIntelのCPUと比較して速くなるかどうかすら微妙です。ゆえに評価関数のところで速度を稼がねばというのはあります。


ともかく、64コア版が$199で手に入るのですから、これが1台のハイエンドPCより少しでも速く探索できるのであれば、この64コア版でクラスターを組むのはありなのではないでしょうか。$199ならば普通のハイエンドPCより断然安いでしょうから。


個人的には、ParallellaにARMのA9ではなく、iPhone5に載っているものか、その倍ぐらいの性能のものがメインのCPUとして載っていれば、そのプロセッサに探索のメイン処理を任せられるのになぁというのはあります。評価関数の計算だけ並列してやらせようというアイデアですね。


まあともかく、並列コンピューティングがなかなか面白い状況になってきたのではないでしょうか。