つい出来心で…
作者急病につき、今週の「A級リーグ指し手1号」は休載します。お詫び申し上げます(編集部)
…えー、(コホン)…
コンピュータ囲碁ブログ始めるっす~
テーマは、FPGAでモンテカルロ囲碁、ということで。以後よろしゅうに~
というわけで、MC囲碁つくってみました。先日の講演会の後、3週間ほどこればっかやってたりして。現状、verilogコーディングはほぼ完。今のとこまだコウの扱いができてないので、SIMLでのplayoutではほぼ終局まで進み、最後に残ったコウで無限ループ、という状態ですが、まあ9割方できたといっていいでしょう。
CycloneIII EP3C120 で合成して、7万LUT弱。動作周波数は、STAでマルチサイクルパスの制約をちゃんと記述できてないのでまだはっきりわからないですが、たぶん20MHz前後でしょう。SIMLまだあまり数やってませんが、2回ほどやったとこでは、初期局面から終局まで3,000サイクル前後。約6,700 playout/secですか。山下さん講演では1,830 po/secとのことなので、ソフトの3.7倍くらい?まあ今は「とりあえず一発作ってみた」レベルなので、まだかなり速くはなりそうです。あとStratixIIIにすれば2倍になるだろうし。なんだかんだで、がんばればFPGA1コアがソフト1コアの10倍くらいでしょうか。
playoutでの手の選択は、今のところはかなり簡略化バージョンです。石を取る/アタリを逃げる、つまり(黒白とも)自由度1の連の呼吸点に打つ手は重み大、他は合法手すべて一律同じ、という感じ。pure randomよりは若干マシ、という程度です。3x3のパターンや、直前の手の近くを優先、くらいは割と簡単にできそう。シチョウは…あまり考えてませんが、一見難しそうかな。ローカルな情報だけでできることは簡単そうなんですが、遠くの情報が必要なことは大変そうです。アタリを「かける」のは、論理的にはそう難しくないですが、物量食うのがネック。自由度2まで認識せんといかんので。
TODOとしては、FPGAに焼くというのは当然ありますが、まずplayout以外のところを何とかしないと。ggmcがフリーでソース見れるので、まずはこれを19路に変えてそのまま使おう、ともくろんでます。でも私は、あのlogやらsqrtやらの意味さっぱりわかってませんので、FPGAのplayout部だけ私作るから、誰か組み込んでみません?とかいうことになるかもしれません。
今後は将棋にせよ碁にせよ、その時々で気の向いた方を書いてくつもりです。どっちかしか興味ねぇ、という方は、「カテゴリ」のところで「将棋プロセサ」か「囲碁プロセサ」を選んで下さいませ。
「囲碁プロセサ」カテゴリの記事
- AlphaGoが誇大広告ぎみな件(2016.01.31)
- SWoPPのFPGA囲碁論文 続報(2009.09.30)
- SWoPPのFPGA囲碁論文を読んでみた…けど(2009.09.28)
- FPGA囲碁ソース公開(2009.09.26)
- 変り身の術(2008.07.20)
playoutだけ作ってくれたら残り何とかしましょうか?
というか、れさぴょんみたいに、ソースあげましょうか(笑)。私のプログラムは、playout部とUCTの部分がきれいに切り離してあるんで。
て、これでUEC杯で「も」負けたら何やってるんだろう私っていう話になるのか(苦笑)?
投稿: うさぴょんの育ての親 | 2008年7月 6日 (日) 23時22分
> 残り何とかしましょうか?
いや、まじお願いしたいくらいなんですよ^^;MCのplayoutはFPGA向きだなーと思ってそこだけノリで作ってみたものの、それ以外のとこまで自分で作る気はあんまりないんで。(てかできなさそうというか)
ただ、今のAリーグで言うとPCとFPGAの通信はかなり遅いので、UCT部はたぶんNiosで走らさざるを得ない。つまりGTP - PC, UCT - Nios, Playout - FPGAエンジン、という分業になるので、PC-NiosやNios-エンジン間のI/Fはやっぱ自分で作らざるを得んか…などと、ちょっとまじめに考え出すと課題山積みです。もうちょい検討して、方向性がはっきりしてきたら、ほんと何か相談したりするかもです。
> UEC杯で「も」負けたら
♪何をおっしゃる うさ親さん
対うさぴょんは0勝でっせ。囲碁の方は、MC部だけ自作でUCTはパクリ、とかで大会出れんのかな?とか。そういう面では、誰かに組み込んでもらわないとそれこそ大会は無理かも。大会出てみたいなーてのは漠然とはあるものの、まだなんも考えてないです。
投稿: 伊藤 | 2008年7月 7日 (月) 20時34分
こんなに一気に作られてしまうとは!
脱帽です。すでに重みづけもできているんですね。
通信部分は大変そうですが、通信できるようになったら並列化まであと一歩?
ますます目が離せません。
投稿: 山田 剛@CSA | 2008年7月 7日 (月) 23時07分
通信は、将棋と同じ方式で行くなら私がやるぶんにはそんなに大変てことはないです。どうやればいいかはわかってるので。ただプロトコルは私が勝手に作ったもので汎用性もドキュメントもないので、他人任せにするのは無理があるのかなと思ってます。
並列化はまだ先でしょうね。今7万LUTで、これに3x3パターンとか入れるとEP3C120はほぼいっぱいになりそう。大型デバイスかネットワーク対応かしないと。
投稿: 伊藤 | 2008年7月 8日 (火) 22時13分