TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

dlshogiでMagic Bitboardを有効にする

やねうら王が飛車と角の利きに、PEXTの代わりにMagic Bitboardを使用することで、Threadripperで高速化できたとのことなので、dlshogiでも高速化できるか試してみた。

dlshogiは合法手生成にAperyのソースを使用しており、AperyはMagic Bitboardを実装していて、HAVE_BMI2を無効にすることで有効化できる(有効にしているとPEXTが使われる)。

自己対局を実行しているPCは、Ryzen Threadripper 3970Xを使用しているので、HAVE_BMI2を無効にしてビルドしなおして、自己対局における局面生成速度を比較した。

現在自己対局では、3枚のGPUで、1GPUあたり3つの探索スレッドと1つの詰み探索スレッドを使用している。
GPUの処理は、効率的なバッチ処理NNキャッシュを使用しており、GPUよりもCPUがボトルネックになっているため、合法手生成の高速化の効果はそのまま局面生成速度に表れると予想している。

比較結果

10000局面を生成した際の局面生成速度を2回測定して比較した。

条件 1回目(NPS) 2回目(NPS) 平均(NPS)
変更前 66.67 66.61 66.64
変更後 75.62 74.44 75.03

平均で、12.6%高速化できた。

まとめ

Ryzen ThreadripperにおけるMagic Bitboardによる高速化は、dlshogiでも同じ効果が得られることがわかった。

大会ではintelのCPUを使用しているので大会での強さには影響なさそうだが、自己対局の生成速度があがるのはすぐにでも恩恵が得られそうである。