いよいよ本日から世界コンピュータ将棋オンライン大会が始まりました。
概要 http://www2.computer-shogi.org/wcso1.html
参加チーム https://www.apply.computer-shogi.org/wcsoc/team.html
棋譜中継 http://live4.computer-shogi.org/wcso1/
特設サイト http://sizer.main.jp/wcsoc2020/
dlshogiは直前にきて、致命的な処理遅延箇所を発見しました。
以前にQhapaqさんからdlshogiのハッシュ再利用が遅いというツイートがあったのですが、
改造dlshogi。1手2秒くらいまでなら満足なレベルの強さになったみたいですが本番の持ち時間だとmctsのハッシュが品切れないか心配。ハッシュをでかくするとその分物理メモリが必要になるし木の再利用などにかかる時間もめっさ増えるからなあ……
— Ryoto_Sawada⛅Qhapaq (@Qhapaq_49) 2020年4月2日
そのときは、気にするほどじゃない、とかレスしていましたが、すごく遅かったですm(__)m
ハッシュに300万ノードくらいある状態で、4秒くらいかかっていました。
遅すぎでした。
原因
原因は、ハッシュだけで使用中のノードを辿れるのに無駄なpositionのmove処理が入っていた(これは軽微)のと、ハッシュノードの変数にconstが付いていなかったことでした。
constがないためコンパイラによる最適化が行われていなかったようです。
最適化 · TadaoYamaoka/DeepLearningShogi@70ef86c · GitHub
constを付けるだけで、4秒から200ミリ秒くらいに改善しました。
今までは思考時間が5秒だとするとほとんどをハッシュ再利用に費やしていたようです。
修正したことでdlshogiは少し強くなったかもしれません。
2020/5/3 追記
まだ遅いので対策を検討しているが、いい方法が思いつかない。