最新

Miyako Shogi System

コツコツ改良、へこたれない
2014| 1|
2013| 12|
2012| 01| 02| 04| 05| 06| 07| 08| 09| 10|
2011| 01| 02| 03| 04| 05| 07| 08| 10| 11| 12|
2010| 02| 03| 06| 07| 08| 09| 10| 12|

2012/04/22

コンパイラ比較(バグ発見)

次の一手問題を解かすと、VC、MinGW、gccではノード数が同じなのだが、iccでは違うノード数となり、違う環境、違うコンパイラで、同じ結果にならないときは、難儀なバグがあるとみた。

探索のダンプを取り、静止探索が違う値を返すところまで追い詰めた。結局、静止探索内で使う差分計算用の変数を初期化するところで、配列の添え字越えを発見、それを直したところ、ノード数はピタリ同じとなった。

コンピューター将棋の進歩2より次の一手問題第1問。反復数=6終了時の値。今のバージョンでは反復数=5で正解(▲7四歩)を返す。

CPU:AMD PhenomII X2 BE555 (3.8GHz)

コンパイラ総思考時間[ミリ秒]NPS
VC++2008 (WindowsXP32bit)2312445538
MinGW4.6.2 (WindowsXP32bit)2109486266
icc 12.1 (Ubuntu64bit)2101482015
icc 12.1 (Ubuntu32bit)2201470998
gcc 4.6.1 (Ubuntu64bit)2002502079
gcc 4.6.1 (Ubuntu32bit)2102480610

open64はやめました。gcc4.6の最適化はすばらしい。

ノード数

PV非PV静止探索
508232486266

昔のバージョンと比べると大幅に高速化している。手生成、オーダリング、探索、ハッシュテーブルをコツコツ、チューニングしていった結果だ。

惜しいことに、このバグは評価関数の学習データに影響があるはずで、今から学習をやり直していては選手権に間に合わない。うーん、どうするか。

追記:gcc4.7が出ているので測定。

コンパイラ総思考時間[ミリ秒]NPS
gcc 4.7.0 (Debian64bit)2035493068

さらに追記:ついでにclangも測定。

コンパイラ総思考時間[ミリ秒]NPS
clang 2.9 (Ubuntu64bit)2202469210
リンクはご自由に (Miyako Shogi System Kyoto Japan)

ダウンロードのページ

Lighttpd

DreamPlug