2012/04/22
■ コンパイラ比較(バグ発見)
次の一手問題を解かすと、VC、MinGW、gccではノード数が同じなのだが、iccでは違うノード数となり、違う環境、違うコンパイラで、同じ結果にならないときは、難儀なバグがあるとみた。
探索のダンプを取り、静止探索が違う値を返すところまで追い詰めた。結局、静止探索内で使う差分計算用の変数を初期化するところで、配列の添え字越えを発見、それを直したところ、ノード数はピタリ同じとなった。
コンピューター将棋の進歩2より次の一手問題第1問。反復数=6終了時の値。今のバージョンでは反復数=5で正解(▲7四歩)を返す。
CPU:AMD PhenomII X2 BE555 (3.8GHz)
コンパイラ | 総思考時間[ミリ秒] | NPS |
---|---|---|
VC++2008 (WindowsXP32bit) | 2312 | 445538 |
MinGW4.6.2 (WindowsXP32bit) | 2109 | 486266 |
icc 12.1 (Ubuntu64bit) | 2101 | 482015 |
icc 12.1 (Ubuntu32bit) | 2201 | 470998 |
gcc 4.6.1 (Ubuntu64bit) | 2002 | 502079 |
gcc 4.6.1 (Ubuntu32bit) | 2102 | 480610 |
open64はやめました。gcc4.6の最適化はすばらしい。
ノード数
PV | 非PV | 静止探索 |
---|---|---|
50 | 8232 | 486266 |
昔のバージョンと比べると大幅に高速化している。手生成、オーダリング、探索、ハッシュテーブルをコツコツ、チューニングしていった結果だ。
惜しいことに、このバグは評価関数の学習データに影響があるはずで、今から学習をやり直していては選手権に間に合わない。うーん、どうするか。
追記:gcc4.7が出ているので測定。
コンパイラ | 総思考時間[ミリ秒] | NPS |
---|---|---|
gcc 4.7.0 (Debian64bit) | 2035 | 493068 |
さらに追記:ついでにclangも測定。
コンパイラ | 総思考時間[ミリ秒] | NPS |
---|---|---|
clang 2.9 (Ubuntu64bit) | 2202 | 469210 |
2012/04/14
■ 第18回コンピュータ将棋オープン戦
人事異動で会社の部署が変わったため慌しく、少しずつしか改良できなかったが、これを逃すとテストの機会が無いため何とか出場した。
結果はこちら。
対局時の構成はAMD PhenomII X2 BE555 3.8GHz OS:Windows XP コンパイラ:MinGWin4.6.2
1回戦:玉形が薄いのに飛車交換は無謀。中盤以降ほとんど評価が悪い展開になった。さすが今泉さん、すばらしい寄せですね。
2回戦:痛恨のプログラム落ち。残り時間から1手にかける時間を計算しているが、それを上回る時間の予測読みをしたときの処理にバグがあり、Iteration1回目中に思考中断をしてしまい、手が返せなくなった。
3回戦:当ソフトは力将棋大好きの棋風だが、特徴が良く出た一局。
4回戦:攻め好きで攻めが切れたときの特徴が良く出た一局。