前回マルチスレッドで2つのCPUを使用して自己対局を行うプログラムを作成したが、局面生成の速度はGPU1つの場合と変わらなかった。
ChainerをPython経由で使用しているため、GILのために効率が上がらなかったためと考えている。
そこで、プロセスを分けてマルチプロセスで実行するようにした。
単に引数でGPU IDを指定できるようにしただけで、特別な仕組みはない。
マルチプロセスで100スレッドずつで実行した結果、局面の生成速度は以下の通りとなった。
比較のため前回の結果もあわせて示す。
シングルGPU(200スレッド) | 9.30 |
マルチスレッド(前回) | 9.24 |
マルチプロセス | 6.25+6.32=12.57 |
マルチプロセスで動かすと、マルチスレッドの1.36倍になった。
12.57局面/秒の生成速度だと、500万局面生成は4.6日でできるようになる。