64bit化

Windows7 RCがダウンロードできるようになったので、ためしに64bit版をインストールしてみました。マシンのスペックは以下のとおり。2004年・2005年の選手権の時のマシンです。久しぶりに起動させました。懐かしい。

  • CPU : Athlon64 3400+ (2.2GHz)
  • MEM : 1GB

問題なくインストールできましたが、解像度が1024×768以下しか選べない。グラフィックカードが認識されていないようです。グラフィックカードはGeForceFX5200が載っています。NVIDIAのサイトからWindows7用のベータドライバをダウンロードしてインストールしてみると「対象の機器がありません」のようなメッセージで終了してしまいます。NVIDIAのサイトをよく読んでみると、GeForceFX5200は対象外の模様。しからばと、使用していない別のマシンからATI(現AMD)の9200SEというカードを抜いてきました。念のため、AMDのサイトでドライバの対応状況を確認すると、またもや9200SEは対象外。仕方がないので、GeForceFX5200のまま1024×768で使用していました。ふと思いついて、WindowsUpdateをしてみると、GeForceFX5200のドライバがありました!

VisualStudio2008をインストールして、64ビットの開発環境を整えました。
K-Shogiのプロジェクトをビルドしてみると、やはり、インラインアセンブラのところでエラーが出ました。その他にもエラーやワーニングが多数出ています。

インラインアセンブラはマルチスレッドのためのロックに使用しているのと、RTSC命令でクロック数を測るのに使用しています。今回はとりあえず動かしたかったので、RTSC関係は削除、ロックは今回のCPUが1コアなので、ばっさりコメントアウトしました。
その他のエラーとしてはVC6から持ってきたプロジェクトだからかOnTimerイベントの引数があっていないようでエラーになっていましたので、正しい形に修正。他にsize_tをintやUINTに変換しているというワーニングが大量に出ていますが、とりあえず問題なさそうなので無視し、ビルドができました。ふぅ。
早速、動かして見ると実行時エラー。デバッグモードで動かすと、定跡の格納領域が足りていないことが判明。構造体にポインタを格納しているので、32bitから64bitになって必要な領域が増えているのが原因でした。(しかし落ちるのはまずいですね。)

これで一応動くようになりました。気になる速度ですが、ある局面の探索で、

  • 32bit 34.6秒 NPS:101,647 (64bit環境で実行)
  • 64bit 30.7秒 NPS:114,548

となり、うわさどおり1割程度速くなっています。
ただし、今回の環境はAthlon64ですが、Core2では64bitの速度向上が悪いとのうわさですので、Athlonほどには速くならないと思われます。
Core i7は64bitはどうなのでしょうね?