2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

tweet

  • tweets

« 2010年4月 | トップページ | 2010年7月 »

2010年5月

bonasseサポート掲示板 ~ 動作環境について

手の届く範囲のいくつかのマシンでbonasse1.2をコンパイルして動かしてみました。動いたといっても問題一問やらせてみたくらいですし、網羅的にサポート範囲を明確にする、なんてことはとてもできないですが、どのあたりまで動きそうか、という参考にどうぞ。

[Linux]

* Ubuntu 9.10 64bit + icc 11.1
私が今使ってます。動いてます。

* Fedora Core 6 32bit + gcc 4.1.1
動きました。

* RHEL 4 64bit + gcc3.4.6
 pthread_setaffinity_np()がない、でエラーになります。これを無理やりコメント化すると、コンパイルは通ったが動かすとSEG FAULTに。
-> 私の記憶が正しければたしかこのマシンで元ボナは動いたはずなので、bonasseの修正のどれかのせいか。ALIGN16あたり?

* RHEL 4 64bit + gcc4.4.4
 上記と同じマシンにgcc4.4.4を入れて試したところ、pthread_setaffinity_np()はやはりないが、これをコメント化すると動いた。
-> pthread_setaffinity_np()はOSがサポートしてないとだめ?この関数はもともとaffinity onの時しか使わないので、make時のオプションでdisableできるようにしました。
   gccはv4以降が必要なのかな?

[cygwin]

* Win XP SP3 + cygwin 1.7.1 + gcc4.3.4

 -DTLPにするとthread.cのコンパイルでこけます。lock()の中でasm文があるんですが、どうもこれが悪さしてる模様(ここをコメントにするとコンパイル通る)。-DTLPなしだと動きました。
-> floodgate観測員さんの「cygwinでスタックダンプ」は再現できませんでした。
    cygwinのせいというよりgccのバージョンのせいかもしれません。
cygwinではTLPはノーサポート、とさせていただきます。
    TLPもmake時のオプションでdisableできるようにしました。
    (当然ですが、そうすると1コアでしか動きません)

[VC++]

* Win Vista SP1 + Visual C++ 2010 Express Edition

 最近私が試したもの。動いてます。
 将棋所+u2bにしたときのバージョン表示は、"5.2.1"になるようにしました。

[SPARC]

* Solaris 5.8 + gcc-3.4.6
"lock_t already defined"となってコンパイルエラー。SPARCやるならちゃんと書き直す必要ありそうです。


ということでまとめると、

・gccはv4以降が必要そう
・pthread_setaffinity_np()でエラーになったらMakefileの頭をいじる
・cygwinはTLP禁止。その他TLPでおかしくなったらMakefileの頭をいじる
・SPARCはだめぽ

でなとこでしょうか。

#autoconfとか使った方がいいのか…でもよく知らないんだよな

以上を反映したバージョンを資料館に置きました。Winバイナリにとっての変更点は将棋所のバージョン表示だけです。PGOなしですがバイナリをここに置きます。一晩floodgateで流してちゃんと動く程度は確認済。なおbonasse2cwin32はCore2Duo 1.86Gです。
 ※「将棋ソフトのページ」のbonasse1.2のバイナリを現在使っていて特に不満ない方は、このバイナリを使う必要はありません。強さに関わるソース変更は今回してないので、PGOがないぶんほんのわずかこちらの方が弱いかも(R10も変わらないはずですが)。将棋所でのバージョン表示が気になる、という方向けです。

Bonanza Feliz 中途半端解析ブログ

全国のファン待望のあのBonanza Felizがついに公開!というわけで私も一ユーザとして早速DLしてみました。余の辞書に完全などという文字はどこにもありませんが、まあざっと目を通してみて気のついたことをつらつら書いてみます。

まずはソースを見る前に浪速ともあれ、ということで自己対戦。1手10秒でFelizがv4.1.3に29-15で勝ち越します。暗算勝率検定器によると有意かそうでないかぎりぎりくらい?でもまあ将棋界においては「7戦して4勝した方が強い」という定理が証明されているので、Felizの方が強くなってる、と判断します。

それでは差分を見てみましょう。bashだと

for xxx in *.[ch] ; do
echo "#### $xxx" >> $OUT
diff $BNZ413DIR/$xxx . >> $OUT
done

みたいなスクリプトを実行して出力を印刷します。ざっと見て変更の多いところは
1. 合議関連
2. genchk, mate3
3. hash
4. history
あたり。このうち1.合議は、クラスタ並列派の私としては興味ないし使わないので丸ごとスルー。2.は、あまりちゃんと見てないんですがどうやらLS3600氏ブログでやってた三手詰とか中合いとかあの辺の話らしい。保木さんも「ボナに入れます」とかコメントしてるし、Felizの謝辞にも入ってるのでたぶんそうなんでしょう。この辺も私が個人的にあまり興味ある部分でないので、自分じゃ読まないけど強くなってることを信じて採用決定です。というわけで3.hashと4.historyを読んでみます。

またまたhash_storeを読みだしますが、…あれ?何か変わってる…v4ではpreferに書くときに旧preferの内容をalwaysにコピーしてたんですが(以前の記事 参照)、Felizではやってないですね。う、う~ん…いいのかな?これだとたとえば同じ深さのデータを何回か書くとき、preferのみ、又はalwaysのみ使うことになり、実質1wayに近い動作になるような気がするんですが。ルートに近い深さでいったんpreferにストアしたらその後ずっと居座り続けるし。うーん私の第一感だとv4方式の方がよさそうに思えるんですが。でもやっぱ、自己対戦したらこっちの方が強かった、なのかな。…なんて言ってるなら自分でやれよ、ということで、hash.cをFeliz版と旧v4ベースbonasse版で自己対戦してみましたが、ほぼ互角ですね。なので今は、若干疑問はあるながらもとりあえずFeliz版hash.cのままにしてます。
hash_probeの方もいろいろ変わってますが、変更のポイントがいまいちわかりませんでした。どうでもいい重箱の隅ですけど、l.357はntrans_exactですよね。

次history。私は去年のGPW行ってませんが、棋理の佐藤さんの論文の方式なんでしょうかね。

- βカット/α更新の回数そのものでなく、使用回数に対する比率をみる
- その比率によって、オーダリングだけでなくリダクションの深さも制御する

ということのようです。GPWの後あちこちのブログ等でこの関連の話があって、私もその辺読んではいましたがいまいち何言ってんのか具体的にわかってなかったんですが、やっとわかった気がします。これは言われてみるとたしかにナイスアイデアですね。さすが論文賞。v4->Felizでボナ単体が強くなった要因の八割方はこれではないかな、と思います。

さて、以上を読んで。とりあえずv4->bonasseの変更とかぶるところはなさそうなので、Felizベースにv4->bonasse相当の変更を適用する、というのをやってみました。けっこう量ありそうなので1、2週間くらいかかるかなー、と最初思ったんですが、diff -cとpatchを駆使したら1日でできてしまいました。5/16-19に流していた felizze980x[16]cがそれです。いちおうFelizより(v4ベース)bonasseより強くなってるのでまあおk。

1cは激指とほぼR同じになりました。大会のあたりでは激指が明らかにR的に優位に立ってましたが、今回でほぼ並んだと言ってよさそうです。8コアは私はマシン持ってないし激指も最近出てませんが、8コアどうしでもたぶん追いついてるでしょう。

また、稲庭対策を復活させてまして、1度だけですが当たりました。勝利。ひょっとしてボナンザブラザーズの中で対稲庭初勝利?1度だけではありますが、対稲庭だとほぼワンパターンなので、今後もたぶん勝てるんじゃないかと思います。

その後もう1点高速化ネタを考えついたので入れまして、これが5/21-22バージョン。これも自己対戦で入れる前より強くなってます。これは並列化のときのみ効く変更で、1コア時は影響ありません。この変更でSSEのsfence命令を使ってるため、SSE必須になりました。Pentium IIIより前のCPUでは動かなくなりましたのであしからず。またIntelアーキ以外への移植にも注意が必要です。まあたとえばSPARCならstbar命令みたいな、相当する命令がだいたいありますんでそう困らないはずですが。

話がそれますが、前に会社のSPARCマシンでこっそりボナンザを動かしてみたことあるんですが^^; 動かなかったです。動く動かないの確認だけで、原因調査はしてませんが。今年の対清水さん戦はT2KでOpteronだからいいですが、来年ペタコン使うとかなったらSPARCですよね。いいのかな?ちょっといじれば動くようになるんですかね。

そういうわけで、Felizベース版の現状ソースをここに置きます。ざっと動かしてはみたつもりですが、ちゃんと検証したわけではないので、問題等ありましたらお知らせください。

Windows対応版うpしました

bontaさんのおかげで解決しました。どうもありがとうございます。いやーてっきりCSA_LANのつもりでいました^^;;;
あとでプチ将棋の場合のフローも勉強して、稲庭対策は復活させようと思っております。

あと思い出したのでついでにと言ってはあれですが、bonasseの改造を行うにあたっては「Bonanzaソース解析ブログ」をおおいに参考にしています。私が最初にボナソースを読んだときはさっぱりわからず、「kkp? 何だ?カルビクッパの略か?」とかいう感じでしたんで。やねうらおさんにも御礼申し上げます。

「資料館」のところはv1.1になっています。今度はWindowsも動くはず。稲庭にはたぶん負けるけどw 問題ありましたらお知らせください。

Windows対応中…だが

bonasseをWindowsで動かしたいという方がけっこう多いようなので、ちょっとトライしてみることにしました。私は今までソフト開発はほとんどUnix系しかやってなくて、Winは素人。cygwin+gccはやってましたがまああれは別なので。ですがまあいい機会ですんでこの際やってみようか、ということでやってみました。

まずVisual C++無料版のDL+インストール。32bitしかないんですね。有料版買う気はないので、64bitはあっさり諦めです。

bontaさんやかずさんのコメントを参考に、VC++で通るようにソースを修正。いちおうコンパイル通って動くようにはなったんですが、floodgateに入れるとめちゃ弱いorz 以前の記事に書いたところで自分の環境は32bitから64bitに切り替え、その後いちおう32bitも対応入れたもののちゃんと検証してませんでした。どっかミスってるんでしょうね。

64bitの方は手元にコンパイラがないので試せてませんが、おそらくfloodgateのbonasse_980Xさんはbontaさんの(64bit)バイナリだと思われ、こちらはちゃんと強いようなので、64bitは大丈夫なんじゃないかと思います。が、なにぶん自分で試せてないので、VC++ 64bitでの使用レポート歓迎です。

32bitの調査の方もおいおい進めていきますが、他にやることもあり、こればかりやってるわけにもいかないので、いつできるかは現状ちょっとわからないです。ご了承ください。

いちおう現状のソースをここに置きます。

ところでBonanza Felizが公開されてますね。まだちゃんと見てないですが、ざっとdiffとったところ合議関連以外もけっこういじってるようなので、要チェックです。

bonasseソース公開

bonasse(高速化版ボナンザ)のソースを公開します。このページの左上の「資料館」のところに置きます。

bonasseはボナンザを高速化しただけのもので、クラスター並列ではありません(ボンクラーズとは別物)。
クラスター並列の方はまだいろいろ未完成で人様にお見せできるようなレベルではないです。今回はbonasseの方だけ。

主にコンピュータ将棋開発者向けの参考用途です。Linux onlyだしGUIとかもないので、一般の人が楽しむようなものではありませんのであしからず。中にREADMEがありますのでご参照ください。

大会後にfloodgateで走らせてるbonasse(i7 860 1core)やsenoabs(i7 980 6core)とほぼ同じものです。floodgateの2week Rで1coreが2600、6coreが2700台くらい。速さあまりちゃんと測ってませんが、どうやら本家より1.5倍程度速いようです。

保木さんとは大会中からいろいろお話ししまして、「両方いいとこ合わせてより強いボナンザを公開できるといいですねー」てな話で一致しまして、大会後もメールでやりとりしてたんですが、私のはLinux onlyだったりして本家ボナンザに取り込むのはいろいろ作業があって時間かかりそう、ということで現状のbonasseをまず私から公開しましょう、ということになりました。いずれは主だったfeatureは本家の方にも取り込まれるんじゃないかと思います(いつになるかはわかりませんが)。

戦い済んで日が暮れた、と思ったらもう朝だ

ふとfloodgateをのぞくと、みなさんもうなんちゃらWCSC20とかで参戦してますね。早っ!YSSL980とかgps_64coreなんてのも。気合入ってるなー。私は自慢じゃないけどまだ箱も開けてません。稲庭さんもいますw激指1コア・YSSLと千日手、ボナフェリに時間切れ勝ち^^;;; まさに最強です。「最強稲庭将棋2010」毎日コミュニケーションズより7/1発売決定、との情報も。(嘘)

恥ずかしながら帰ってまいりました

何年前のネタだよ(たしか35年くらい)

大会は皆様ご存知のとおり、2次予選9勝0敗、決勝5勝2敗で4位でした。
もし○○が××だったら…などとまあ思わないでもないですが、勝敗は時の運ですからね。決勝は別にOC失敗したとかいうんじゃなくて、単純にサイコロの出る目が違っただけ、と捉えてます。ちなみに3.33->3.6GHzでした。Rはそんなに上がってないでしょう(せいぜい10とか)
私としては過去の自己ベストを大幅に上回りましたんで、もう望外の成績と思っております。

激指はfloodgateのRでも頭一つ抜けており、優勝はノーサプライズですね。おめでとうございます。

ご声援いただいた皆様、本当にありがとうございました。
いずれもうちょい詳しく書くつもりではいますが、例年通り今はとにかく疲れ果ててまして、しばし引きこもらさせていただきます。ではおやすみなさい(くかー)

« 2010年4月 | トップページ | 2010年7月 »