読者です 読者をやめる 読者になる 読者になる

将棋ソフトの並列化処理について

今回並列化は複数MacOSで処理されているパソコンに
探索の為のタスクを割り振って計算してもらい
後から結果を一つにまとめて出力するという方法です。
1997年にチェスの世界チャンピオンに処理したディープブルーなんかは並列化して
処理を高速化していました。

処理するタスクにも依りますが
単純に多くのPCを使えば処理が早くなるかというと
そういう事でもありません。

プログラムには実行する順番があるので
(例えばある関数が実行された後の評価値を別の処理で使うとか)
将棋のプログラムも
①ゲーム木の探索をして評価関数を計算をする
②探索された部分の評価関数で最も形勢が良い場所を判断する

この部分は必ず前後が逆になるという事はありませんよね
こういう風に実行する順番がある場合は
並列化による高速化の効果は得られにくくなります。
プログラミングの手法も出来るだけ大きな処理を
均等に分割するというアイディアが必要になるでしょう。

今回のゲーム木の探索なんかの場合は繰り返し評価関数を各ノードで
計算するという処理が行われているはずなので
並列化にはある程度向いているんじゃないでしょうか?