開発道路地図(裏日本編)
飲み会翌日は年次とってダラダラする、が座右の銘です。
裏、とか問題表現を用いております。何かT*COSチームあたりからクレーム来そうな。
6)マルチコア
FPGA思考エンジンを複数個使って並列処理で性能上げることを考えます。
まずFPGA1チップにどのくらい入るのか?です。今のAリーグはCyclone IIIのEP3C120というチップ(1個)が載ってるボードを使ってます。FPGAチップの規模は、LUTという基本単位の数で表されますが、このEP3C120には120K個のLUTが載ってます。ただFPGA上のLUTはすべて100%使いきることはまず不可能で、せいぜい85%くらいです。つまり120K個のうち100K個くらいしか使えない。で、今のAリーグは約70K LUT使ってます。なので、2コアも載りません。
これをマルチコア化するには、A)もっと大きいFPGAチップ(が載ってるボード)を使う、B)FPGAが複数チップ載ってるボードを使う、C)ボードを複数枚つなげる、という3つの方向があると言えます。これらは排他的ではなく、組み合わせることも考えられます。
まずA)チップ巨大化の方から。
CycloneIIIだと120K LUTが最大のチップですが、上級シリーズであるStratixIIIでは最大はEP3SL340。340K LUT相当です。正確に言うとStratixIIIとCycloneIIIでは基本のLUT自体が異なるのですが、StratixIIIの方の340という数字はCycloneIIIのLUT換算、の模様です。このチップが使えると、70K LUTのエンジンは3-4個入りそう。
ただ、お値段も張ります。EP3SL340を搭載したボードはTerasicから出ていますが、代理店の立野電脳(株)のページには以前、90万円と載ってました。うーん…ちょっと手が出ないですね。まあ車買うと思えばまったく出せないってことはないかもしれませんが、これ使えば大会で優勝できるというならまだしも、2次予選15位が10位になる、くらいでは90万出す気はしないでしょう。なおEP3SL340を搭載したボードは他にもあるのですが、このTerasicのがいちばん安いそうです。
最近発表されたStratixIVは、IIIより集積度が上がっています。まだ価格等は不明ですが、おそらく290K LUT相当のチップが今のEP3SL150と同じ程度の価格で出てくるのではないかと思われます(チップサイズ等からして)。EP3SL150搭載のボードは30万円強。290Kだと3コアくらい入りそうです。ただ新製品は発表から実際の出荷まで1年近くかかるので、StratixIVは来年の大会には間に合わなさそう。
B)複数チップ搭載ボードというのは、あることはあるのですが、最低でも100万近くします。あと、チップ間の結合がボードによって変わってくるので、汎用的な設計ができないというのもつらいところ。上述の立野電脳ページを見ると、EP3SL340を60個(!)搭載のボード、なんてのもありますね。これだともしかして決勝行けるかも?でも、数千万かかりそうです。
またC)複数ボードも価格ネック。150のボード1枚が約30万なので、3枚で約90万。これもちょっと現状検討対象外です。
ということで、普通に考えると再来年にStratixIVでマルチコア、というのが現実的な線になりそうです。…などと言いつつ、実はここがもう少し何とかならないかと、多少裏技的な話を進めたりもしてたりします。まあまだちょっとどうなるかわからないので、うまくいくようならまた後ほど書きます。
なお大きいチップを使うとすると、ツールも強化が必要です。今のEP3C120用にはコンパイル用のPCにCore2Duo 1.86GHz + 2GBメモリ + WinVista 32bitを使ってますが、これで70K LUTの回路のコンパイルに約6時間かかってます。3コアチップのコンパイルには、メモリは6GB程度必要な見込み。必然的にOSも64bit版が必須。ツール(QuartusII)はたしか並列化対応してるはずなので、今だとCore2Quadくらい使いたいところ。周波数もできるだけ速いの。コンパイルに数日、なんてなった日にゃたまらないので。などと言ってると、今のPCは自作で5万円くらいだったんですが、次は私がいまだかつて使ったことないようなモンスターマシンを使うことになりそうです。我が家はウサギ小屋なのでサーバなんぞは置けませんが、デスクトップの幅広いのになるんでしょうね。…机狭くなりそう…
<並列化時のソフト>
コン将での並列化というと、Crafty流がおそらくいちばんポピュラーでしょう。ですがこれはAリーグでは使えない。Crafty方式はスレッド間でメモリ共有を前提にしていますが、うちは共有メモリないし。なので、クラスタ並列のモデルを想定してます。
実はクラスタ並列化は、5年くらい前にDeep Purpleで試してました。なので、ソフトはこう作ればよいだろう、というのはある程度イメージできてます。とはいえ性能上げるにはかなりのチューンが必要になるでしょうが。
工数的には、ハードよりもソフトの方が大半になるでしょう。だってマルチコアのハードなんて、メモリ共有しないなら「並べるだけ」みたいなもんですからね。クラスタ並列探索の実装とチューンに何か月かかるか…というところ。来年5月にできるかはちと疑問。まあハードが来年は揃わんだろうというのもあるので、再来年にStratixIV+並列化ソフトでマルチコア、というくらいの気分でおります。
さて性能向上ですが、StratixIVの290K LUTに3コア入ったとして、「ルート仮説」を信じると1.7倍。レーティング+70くらいかな。StratixIVの最大チップは680Kだそうですが、もし裏技等でそれが使えると7-8コア入って2.5倍?レーティング+150か。
* * *
長々と書いてきましたが、以上の1)-6)が2008年大会以降の主な実装改良アイデアです。まとめると、1),2)は既に入ってますんで、グレードアップで2倍/R+100、P&Rで1.4倍/+50、パイプラインで1.4倍/+50、マルチコアで1.7倍/+70?ぜんぶ合わせて6.8倍/R+270くらいでしょうか。まあいろいろ仮定入れてますんで、誤差だいぶあるでしょうけど。仮にこのとおりとして、今のマイムーブにやっと追いつくくらいですか。2年たてばまわりも強くなるでしょうから、結局順位はあまり変わらないのかな?
「高速化の話ばっかじゃん!他にないのかよ?!」と思われるかもしれません。いやまったくそのとおり。ただ、高速化は定量的に見積りやすいんですよ。レーティングいくら上がるか、まである程度予想つきますから。もちろん評価パラメタのチューンというのもあるんですよ?これはこれで多少やることにはなると思いますが、これやってどんだけ強くなんのよ?というのがさっぱり予想つかない。なのでどうしても優先度低くなってる、という状況です。記事に書きづらい、というのもあるし。
高速化以外で強くなりそうなこととしては、
1)評価パラメタのチューン、の他に
2)定跡チューン
3)水平線対策
があります。
定跡に関しては、今は14手めまではれさぴょんまかせ、それ以後は定跡の続くかぎりれさぴょんが指し、定跡から外れるとFPGAで指します。最初のころは30手までとかしてたんですが、急戦になると20手めくらいから切りあいになることもけっこうある。れさぴょんは戦いでなければかなりまともな手を指すんですが、ちょっと強い(2次レベル以上の)ソフトと戦いで競り合うとあっさり読み負けて駒取られることも多かったため、切りあいになる前にFPGAに移るように、多少安全めにみて14手としてます。
しかし14手では、囲いきってくれない。矢倉系だと、7八金、7七銀くらいまで動かしたところでFPGAに移ります。FPGAは囲うなんてことは考えてません。王が金銀に寄る、くらいはやってくれるので、5九から6八に行く、くらいはやります。その後右金が4九->5八くらいにも時々来てくれる。でもそこまで。王が8八に入ったりは絶対せず、6八のまま戦いに入る、というのが現状のパターンです。ですのでこれをちゃんと8八まで囲うようになんらかの工夫をすれば、けっこう強くなるだろうとは思っております。
ただ、定跡ははっきり言ってやる気ありません。FPGAでなくソフトでやるところなので、「俺のやることじゃねーよ」とか思ってるんですよね。大会参加というのを気にしなければ、極端な話、序盤は今のれさぴょんのかわりにもっと強いソフト使って、また途中からFPGA、とすればよいわけです。一から十まで全部自分で作ろう、という気ははなっからないので。実際、大会でなくfloodgateならこれで十分なわけですよ。いやどっかからひんしゅく買いそうな気もしますが。
水平線対策というのは、ハッシュコードを実装したので、同一盤面のチェックができるようになった。なので、たとえば歩を打ち捨ててその後同一盤面に戻った(持駒減っただけ)、を検出して評価マイナス無限大にしようか、そうすりゃ打ち捨てしなくなるだろう、ということです。今のAリーグを見てると、ちょっと相手の注文にはまって若干の損が必須となったとき、その損を受け入れてそこからベストを尽くせばまだそう致命的に悪くはないのに、そこで無駄に歩を打ち捨てたりして決定的に形勢損ねる、というのがけっこうあるんですよ。これは(ハッシュ入れた今となっては)そう難しくないはずなので、やりたいとは思っているんですが、これまた効果が定量的に見えないため、目に見える高速化の方を優先していて、いつになるかわからん、という状況です^^;;;
これ以外は、大きく効果期待できそうなものは今のところ思いつかないです。探索系は、王手や取り返しの延長は入ってるし、けっこういろいろ試してもみたし。末端近くで手を刈るのもけっこうやったし。ネタがない、です。まあこれまで挙げたものだけでおなかいっぱいではあるんですが。
* * *
話変わってFPGA-MC囲碁の方ですが、中断してます。いろいろ検討してたんですが、今のやり方に限界を強く感じるようになってきたため、別のアプローチで検討を始めたところ。これもそのうち書く予定です。
*
…という記事を書き上げて、さあこれから投稿しようか、というところで、例の情報処理の記事のコピーを入手しました。Aリーグのことも多少書いてあって、ありがたいことです。名前違ってましたが^^; それはともかく、鶴岡さんの「ASICにしたら」に、……!!! フラグ立ってしまいました。不覚にもぜんぜん考えてなかったですが、うーむ。よいですねぇ。むふふふ。検討してみましょう。
« 開発道路地図(西日本編) | トップページ | 新型兵器投入 »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
ASICって現実的なコストで出来るんでしょうか? 可能ならば是非とも。
ミニ小特集には「2010年も不可能ではない」云々の思わせぶりな話も出たことですし、ハードの貢献にも期待したいです。
投稿: 山田 剛@CSA | 2008年8月29日 (金) 00時48分
コストどのくらい?性能どんだけあがんの?工数は?といったあたりをまぢで調べて、今回のFPGAマルチコアみたいな記事で書こう、ともくろんでおります。私個人で出せる金額でないことは明白ですが、スポンサ募るにも青写真がないと:)
投稿: 伊藤 | 2008年8月29日 (金) 10時08分