速度の向上路線を進めてみる

コンピュータ将棋は、日曜に少し開発したが、
利きコントロールコメントアウトしたり、速度向上をがんばってみた。
まだ、高速将棋盤対応が入ってないので、そこがだめだけど、
反復深化してるし、生成した駒の評価もやめてしまって、
いまんとこ、25秒間に300万ノードぐらい。12万node/sec。
試しに同PCで、ボナンザを見て見ると、25万node/secぐらいでてる。
ということは、自作は約半分の速度しかないということか‥‥。
実際、ボナンザみたいに評価関数が良くないし、静止探索もいれてないので、
これではダメすぎる‥‥。
とかいいつつ、上の数字も不安になってきた。やはりツリーの内容を検証できるツールかなにかいるなあ。dosアプリのままでは限界か‥‥
反復深化だと同じ局面を何度も生成することになるけど、それも重複して探索ノードと数えるのかな?
考えてみたら、それは別か。それだと、25万node/secって化け物‥‥


chessだと、bitboardという手法で高速処理できるようだけど、ボナンザも似たようなことしてるのかな?
chessは8x8だからちょうど8x8=64で、64bitでポーンのありなしを表したりできて、
64bitのCPUと非常に相性がいい。
あと、rotate bitboardという、bishopみたいに斜めに利きがある駒の処理用に、
ボードを45度回転して処理したりするらしい(テーブル用意して回転させるので高速)


将棋だと9x9だから81bit。中途半端だ。
コンピュータ将棋(サイエンス社)にも、将棋盤は何ビットで表現できるかという項目があるけれど。
2chのコンピュータ将棋の過去ログにも検討した人がいた。
81bitで駒のありなしをあらわして、bitが立っている順に駒の種類を記述していく
みたいな方法で、小さなビット数で表現できる。いわば圧縮みたいな感じだな。
たくさんある駒=歩はなるべく小さなビットで種類を表現すれば、全体が減る。
単純なビットレングス圧縮みたいなもんか。
ビットで表現すれば、メモリからレジスタへの転送が減るから、理論上は速度が向上するはずだけど、将棋は中途半端にでかいわけか‥‥
けっきょく、日曜日は3歩進んで6歩下がるぐらいで、なにも進歩がなかった‥‥。