Stockfish DD – thread スレッド

今回はスレッド周りです。

探索を並列化するために並列数だけスレッドの生成が必要です。あと思考時間を監視して、時間になったときに思考を打ち切る判定をするためのスレッドも必要です。

GitHubのC++11用のコードだとスレッド生成はstd::threadを使って実装されています。なお、ここで紹介しているのはC++11用のブランチです。

StockfishのGitHubではMasterに修正が入ると数日以内にC++11用のブランチにも同様の修正が反映されるようなので、特に問題がない限りC++11用のブランチを参照したほうがいいと思います。

私がこのthreadのソースコードを読んでいるとき、「ごちゃごちゃして悪い実装だなぁ」と感じていたのですが、最新版のStockfishではそのごちゃごちゃ感を取り払ったような改善がなされており、かなりシンプルな作りになっています。そんなわけでして最新版のソースコードもご確認ください。

探索ノードのsplit(並列探索時にあるノードを分割して並列探索化すること)の判定条件は将棋の場合は、調整したほうが強くなるとは思いますが、現実的にはこのへんのパラメーターをいじくりまわしてもなかなかいい成果は得られないようです。

 

(Visited 1,946 time, 1 visit today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です