x64環境での指し手生成祭り

とりあえず、普通の(差分ではない)指し手生成の速度は、次のようになりました。
マシンは、学習/実験用に購入したCore i7 860 2.8GHz、1コアにて検証です。


・初期局面 : 6.12M回/sec
・指し手生成祭りの局面*1 : 3.24M回/sec 


高速化のためにx64に適した特殊なbitboard(RBB)を用いています。詳しいことはまた後日書きます。


RBBを使うことによって、gencapが極端に高速化できたので、初期局面の指し手生成速度が著しくupしました。(初期局面でのgencapの呼び出しは、13M回/sec程度可能)


しかしgendropは、まだチューン前で以前のもの(歩の有無×香の有無×桂の有無×銀金角飛(5種類) = 40通りにunroll)を使用しています。この部分のチューンは結構大変で、いまここに湯水のごとく時間を費やすわけにはいかないので、以前のルーチンのままになっています。このgendropで伸び悩み、指し手生成祭りの局面は結局、3.24M回/secにしかなりませんでした。


まあ、いずれにせよ差分指し手生成でもgencapはこれ以上速くするのは結構難しいので、RBBを使うなら苦労して差分指し手生成をやることもないかなというのが正直な感想です。通常の探索ではgencap以外はそれほどボトルネックにはなっていないので差分指し手生成をやってもRBBに勝てるかどうか怪しいです。


雑感としてはL1/L2に入っているメモリのメモリコピーが思ったより遅いです。L1に入っているメモリのコピーがこんなに重いと差分生成時のメモリコピーのコストが無視できません。