「プログラミング」カテゴリーアーカイブ

K-Shogi 改良後に強くなったかの判定について(自己対局)

前回、同じバージョンの自己対局で勝率5割だったと書きましたが、今回操作ミスで同じバージョンで2回自己対局をやってしまいました。結果は138勝128敗(51.9%)と、151勝130敗(53.7%)でした。これまで勝率が53%だったらかなり喜んでいたのですが。。。やはり、自己対局は信用できないのか?もう少し、対局数を増やす必要があるのかも。思考時間は今は1手6秒でやっていますが、3秒にしてみるか。。。
強さの確認方法には悩みます。

開発ツール

メイン開発環境の移行が完了しました。

PGOなしの通常の最適化でコンパイルしたバージョンと、VC6でコンパイルしたバージョンで念のために自己対局してみました。一日動かして73勝73敗でした。これで思考ルーチンの実行結果の面では安心して移行できます。また、自己対局の結果の正しさも確認できました。(あまり同じバージョンで自己対局したことがないので。)

ところで、PGOはプロファイルを取ってから最適化しますが、ソースを修正したらまたプロファイルを取る必要があるのでしょうかね?

開発ツール

メインの開発環境でVC6からVC2008への移行作業をしています。(前回は検証環境でした。)

プロファイリングが使えなくなる件で迷っていまして、VC6で開発して最終コンパイルのみVC2008等も考えていましたがやはり面倒なので移行することに決めました。現在インストールされていたExpressEditionをアンインストール中です。

64bit環境はどうするか迷っています。ライセンスがないので買わないといけませんが、どうせならWindows7まで待つかという気もしています。検証だけならWindows7のベータという手も有りますが、ベータのダウンロードは締め切られていました。。。

VC2008のPGO

VS2008Proを入手しました。

VC6のプロジェクトをコンパイルすると、エラーとワーニングの山。。。

デフォルト状態ではfor (int i=0; i<100; i++) {…} としたときのiのスコープがVC6の時とは異なるようです。コンパイルオプションを変更するとソースはそのままでOKでした。ワーニングはstrcpyはstrcpy_sに置き換えろみたいなものが大量に出ていますね。これは無視してよさそう。

その他、いろいろありましたが、何とかコンパイルでき動かせました。

速度はVC6でコンパイルしたものとはほぼ同じようです。コンパイルオプションで最大限の最適化というオプションがあったのでその設定でコンパイルしてみましたがむしろ遅くなってしまいました。

さて、お待ちかねのPGOですが、446秒かかっていた探索が387秒で完了、なんと約0.87倍に短縮されました!!ソースの見直しでここまで高速化するのは至難の業ですから、乗り換えてよかったです。

あとは、64ビット化するかですが。。。手元に環境がないので簡単には試せませんが、1割ぐらい速くなるのなら実行したいですね。備後将棋の恩本さんはあまり変わらなかったとおっしゃっていましたが。

あと気になるのはVS2008Proでコンパイルしたモジュールの動作保障がWin2000以降とのことで、95,98,Me,NTが動作保障の対象にならないようなのです。動かしてみて動けば良いような気はしますが。