FPGAモンテカルロ囲碁のソースを公開します。このページの左上の「資料館」のところに置きます。
去年7月ころに作ってたものまったくそのままです。もう1年くらいいじってませんが、最近GPWやSWoPPで発表があったり、某ブログでも開発が始まったりしてるので、参考になるかと思い公開しときます。
#一年前は「こんなの他に誰も興味ねぇんだろうな~」と思ってたんですが^^;
この回路がやるのは、単にモンテカルロのプレイアウトを終局まで行うだけです。1年くらい前に「UCTがネックだなー」と言ってたところで開発止まってて、そこから進んでません。FPGAに焼くための環境もできてませんが、SIMLはできます。合成も前にやったので通るはずです。SIMLの流し方は中のREADMEをご覧ください。多少の解説もREADMEに書いてます(あまり大したこと書いてませんが)
SWoPPの論文はまだ見てませんが、Webで見える要約だけは見ました。19路でのプレイアウト速度はなかなか出てないみたいですね。GPW2008の発表では、メモリをシリアルに読んでるとかいう話だったのでそこがボトルネックだと思ってましたが、SWoPPのは同じ構成なんでしょうか、別物なんでしょうかね。
打ち上げる石の認識は、やり方完璧に忘れてたので今コード見てみたら、ちょっとトリッキーなことやってますね。簡単に言うと、1サイクルで上下左右の四方に一路ずつ「連ID」と「呼吸点の数が0か1か2以上か」を伝播します。連IDとは、呼吸点の位置IDの最小値。連IDが意味を持つのは、呼吸点が1のときだけ。隣どうしが、呼吸点の数が違うか、呼吸点の数がともに1で連IDが違ったら、伝播して次のサイクルへ。伝播しきったら連の認識完了。つまり、1手打つごとに複数サイクルかかります。一局が400手強で2700サイクルだと、1手平均7サイクル弱かな?白の連の唯一の呼吸点に打つとき、その連を打ち上げます。
話は変わりますが、例のライブラリ論争中にずっと脳内を流れてた曲があるんですが、なんと動画ありました。だいぶ昔のなんですが。
これはぜひ選手権の公式ソングに認定してもええんではないかと。
最近のコメント