OpenMPでお手軽並列化
方策勾配法の学習ルーチンを、OpenMP使って並列化してみました。
今ボトルネックになっているのは自己対戦して方策勾配を計算する部分なので、そこだけ並列化です。
効果としては、シングルスレッドで2463秒(41分3秒)かかっていた処理が721765秒(12分45秒)になり、約3.43.2倍の高速化です。(Core i7 3770K・4コア8スレッド動作時。)// 2012/12/07 00:40 計算間違ってたんで修正
4倍超えなかったのは残念ですが、メモリアクセスとかがボトルネックになってコア数分ほどは伸びなかったって事でしょうか。
上で計測した時間は本将棋で全幅2手+静止探索一段目6手での100局の自己対戦学習の時間ですが、このペースだと24時間あたり1万局行けるので、割と実用的な時間で学習出来そうです。シングルスレッド時より1手余分に読める感じです。