TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

将棋AIの進捗 その45(大会直前の性能改善)

いよいよ本日から世界コンピュータ将棋オンライン大会が始まりました。

概要 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のハッシュ再利用が遅いというツイートがあったのですが、


そのときは、気にするほどじゃない、とかレスしていましたが、すごく遅かったですm(__)m

ハッシュに300万ノードくらいある状態で、4秒くらいかかっていました。
遅すぎでした。

原因

原因は、ハッシュだけで使用中のノードを辿れるのに無駄なpositionのmove処理が入っていた(これは軽微)のと、ハッシュノードの変数にconstが付いていなかったことでした。
constがないためコンパイラによる最適化が行われていなかったようです。
最適化 · TadaoYamaoka/DeepLearningShogi@70ef86c · GitHub


constを付けるだけで、4秒から200ミリ秒くらいに改善しました。


今までは思考時間が5秒だとするとほとんどをハッシュ再利用に費やしていたようです。
修正したことでdlshogiは少し強くなったかもしれません。

2020/5/3 追記

まだ遅いので対策を検討しているが、いい方法が思いつかない。