So-net無料ブログ作成

Puella α ソース公開 [将棋]

今日一番のニュース

http://aleag.cocolog-nifty.com/blog/2013/08/puella-620e.html

初代電脳こと伊藤さん公開してくださった。
全く別のことにチャレンジされるということなので、せっかく育てた我が娘を埋もれさせたくないというような意味があるのだろう。多分。

Bonanzaを使っているという風に話は聞いていたが、勝手に想像していたのとは違っていた。
OpenMPIはよく知らないのだが、てっきり本家Bonanzaのようにスクリプトでほとんど対応してるのかと思ったら、Bonanzaをがっつりクラスタリング用に拡張していた。

ただ、Bonanzaのファイル構造は留めているので、何をやろうとしているかはおぼろげながらわかってくる

あと、ざっと見てみた限り、AVX対応による256ビットビットボードで高速化を図っているようだ。
本家BBにあった、斜めのBBが消えていて単体でもパフォーマンス出てるんじゃないかと思う。

あと、このBB拡張の影響か、fv.binも拡張して使っている。
本家ではビットで扱っているせいかシフトだのなんだのがあったが、Puellaα版では配列参照ですむようになってる模様。そのため本家にバックポートするのが難しい気もするが、単にfv.binを2種類置いておけばいいだけだからあんまり関係ないだろうか。

BonanzaのReadme読むと本家のSSE4.2のコードは伊藤さんからの提供らしいので、6.1とか公開されることがあったらAVXも入ってるかもしれない。

ICC使ったほうが2割ぐらい早くなるというのも、元々BonanzaベースでBBによってかなり速度に最適化されているのに加えてAVXを使っているからだと思う。
が、今のgccやLVMだともっと話は変わる可能性はある。-O3とかあるし。

ただ、速度が出ない場合はそもそもアルゴリズム的に高速にならないボトルネックがあるんだと予想。キャッシュコヒーレンシーとか。まあ保木さんの実装力が異常。

PuellaαのBonanzaのバージョンは6.6.6となぜか変えられていた。遊び心だろう。

キャスリングなんちゃらっていう関数があって、明らかに入玉計算関数だった。「適当に作った」的な発言をされていたが、ビットボードの+26とかのマジックナンバーが入ってるのでうろ覚えの俺には理解できなかった。
どういうときに発動するかまでは読み取れず。ただ入玉判定的な感じでしか動かないように見えたので「悪影響がでないようにするので難しい」という発言が思い起こされた。

拡張部分はC++で書かれていているが、基本的にMPI部分だけだと思われるので読みやすいとは思う。
ヘッダに実装されていることが多いのはきっとファイルをわけるのが面倒だったからだろうか。
コードを見てみるとわかるが、最短距離で実装した風になっているので、ある程度成型したほうがわかりやすくなるかもしれない。

論文読んだ限りだとあるノードの下をマスターからスレーブに計算してほしい指示を出すのでmaster3.cpp当たりをみてれば局面をSlaveに送る部分が見れると思う。

forrはマクロだろうか。最初タイプミスだと思ったがループを完結に書くマクロだと予想

Readmeはかなり親切で、全くわかっていない人でもある程度は手を出せるようにSSHやNFSについても軽く振れられていて感動した。

電王戦はクラスタリングが無いのであれだが、このBonanzaを拡張する方向性のプログラムであれば、Bonanzaを出発点にしているコンピュータ将棋の作者にはすごい参考になるんじゃなかろうか。論文も発表されているし。

来年のWCSCではクラスタリングブームが来るかも。

まあとにかく感動した。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0