- 【オセロ,将棋】ボードゲーム Part2【囲碁,War】
156 :310[sage]:2017/12/14(木) 00:19:28.11 ID:9pKHf6s7 - 排他制御は、まあ普通にしてますけど、PPLのcritical_sectionでlockしたり、
int型ならatomic<int>していたりで、並列ライブラリにお任せです。 またVirtual Lossという方法があって、ツリーを下っていく時は、先に負けた事にして 降りて行って、末端から戻ってくる時に正しい勝敗に置き換える事で、並列探索 の各スレッドが同じ枝に集中しないようにして、排他がかかる可能性を減らしてます。 あとは、排他制御が必要な領域を細かい単位に分割する事ですかね。 #と思って、ソース見たらVirtual Drawになっていた(汗 あ、そうか。DB化しているって事は、合流ありだし、盤面をキーにしなきゃならないから そうなるとちょっとややこしいのかな? 自分は合流無視で、各ノードに盤面情報を保持していません。直前着手のみ持って いて、ノードをたどる時に盤面情報を更新しながら降りていきます。着手もBITBOARD の64bitは無駄なので、char型にしちゃってます(内部的にはintなんだろうけど)。
|
|