FPGAでコンピュータ将棋を作る(7)

以下、FPGAコンピュータ将棋の 100% 妄想記事


・指し手生成器


指し手は、指し手生成器で生成後に合法性のチェック(駒を動かすことによって自玉が取られないかなど)が必要である。


また、局面を戻す作業も必要だし、手損検出のためには局面のハッシュ値を置換表に登録するような作業も必要である。


要するに指し手生成器は結構の計算コストが必要だが、それなりに並列化は出来そうである。


そこで、並列的に指し手を生成して、合法な指し手を arbiter を通じてqueueに積んで行き、そのqueueから並列的かつ逐次的に指し手を取り出して、局面評価器で評価を行なう必要がある。このとき、arbiterがmove orderingも行なう。


また、指し手自体は、beta cutが起きたときのために、beta cutが起きたときに読むべき局面も事前に指し手の生成をしておく。


局面の評価器はLEs*1を結構食うが、指し手生成器はそれほどLEsを食わないので、同じ探索コアを複数のせるよりは、この部分は出来る限り並列化しておくほうが資源(LEs)の有効利用が出来ると思う。


探索のために指し手を戻すために時間を食われるのは馬鹿らしいので、そのへんはうまくやる。


・局面の評価器


局面の評価器は、1つのFPGAに数個ぐらいなら載せられると思う。また、指し手のqueueに積まれているものをパイプラインで逐次的に処理する。


Altera Stratix III 3SL340で、500MHz , 10クロックぐらいで評価出来るのではないかと考えている。パイプラインになっているので、beta cutが起きなければこの部分は秒間 500M局面を評価できるとみなせる。


指し手生成器とそのarbiterのほうには頑張ってもらって淀みなく 500MHz で指し手を用意する。


・システム全体としての性能


局面の評価器は 3コアぐらいなら載せられるとして、結局システム全体では、500MHz × 3コア = 1.5G nps*2に到達できる。秒間15億局面である。しかし実際はbeta cutが起きるので、実効としては、この1/3程度の性能である、500M nps程度に留まると思われる。


ちなみにコンピュータチェスのDeep BlueはVSLI 512個で秒間2億局面。実効では、200M nps/512×√512 ≒ 8.84M nps 程度ではないかと思われる。


また、コンピュータ将棋の場合、最新のパソコン(Xeon X5482×2)で、1.5M nps × 8 core = 実効 1.5M nps × √8 ≒ 実効 4.24 M npsぐらいじゃないかと思われる。*3


つまりは、FPGA化すると最新のパソコンの100倍以上多くの局面を読めるわけで、パソコン用のコンピュータ将棋のトップ集団のソフトと同等のアルゴリズムのものをFPGA化出来れば、npsが2倍で +R200 上がるとして、200× log2 500Mnps/4.24Mnps ≒ +R1376


YSSがXeon X5482×2でR2800ぐらいだから、このシステムでは R4176に到達できる。
プロ棋士のトップ(おそらくR3300付近。R3700超えってことはないはず)に十分手が届く。


■ この記事の妄想箇所


・最新のFPGAでも500M npsも本当に出せるかどうか知らない。(100M npsぐらいなら十分に可能な範囲だとは思うが。)
・Rの高い集団において、2倍のnpsで+R200が成り立つかどうかわからない。
FPGAのプログラムの開発自体が結構大変。パソコン用のコンピュータ将棋のソースプログラムが手元にあったとしても、それと同等のアルゴリズムを実装するだけでもかなり困難。
・パソコン用のコンピュータ将棋のトップ集団のソースプログラムが私の手元にあるわけではないので、まずはそれを開発するところから。
・長い持ち時間だと人間側が有利。Rに換算して、2割(?)増しぐらい。


■ FPGAコンピュータ将棋開発の問題点


◎ 開発効率が悪い


・パソコン用のコンピュータ将棋とは違い、実装に時間がかかる。
コンパイル(論理合成)に時間がかかるのでターンアラウンドタイムが長い。


◎ 敷居が高い


・VerilogHDL/VHDLやシミュレータの使い方を覚えるところから。
・評価ボードが高価。(最高性能のものは50万〜100万ぐらい。ただ、パソコンのほうもXeon X5482×2ならそれぐらいになるだろうが…)
・場合によってはハードウェアの知識が少しいるかも。


◎ 入手性が悪い


・開発用のボードの入手性が悪い。欲しいスピードグレードのFPGAが載っている開発用のボードはなかなか入手できない。
・Stratix IIIで性能的に不足だとすれば、次の製品(Stratix IV)を狙うしかないが、2010年には間に合わないような…。


◎ ASIC化にお金がかかる(数千万)


案1) FPGA将棋でプロ棋士にある程度勝てることを実証する。そうすれば、FPGAをASIC化してPCにUSBで接続できるようにして、PC用将棋ソフトとして販売できる。それを連結できるようになっていれば、256個ほどつなげればさらに16倍ぐらい速くなるのでトッププロにも余裕で(?)勝てる。


案2) コンピュータ将棋トーナメントで優勝して、どこかのスポンサーについてもらって、プロ棋士と公式対局を行なう。そのときに勝ったほうに賞金がもらえるようにしてもらって、その賞金でASIC化。


案3) ある程度、成果が出せた時点でスポンサーを募る。そのお金でASIC化。

*1:Logic Elements

*2:Nodes Per Second

*3:あくまで予想。誰かBonanzaなどで測定したデータちょうだい。