並列化効率(2)

昨日のエントリの続き。
書き忘れましたがcrafty式の並列化での話です。
一手5秒6スレッドで全10局、並列探索が一切行われなかった局面を除く
1244局面に関して各平均値は

  • (全ノード数)/(全ノード数-探索の途中で結果が必要がなくなったサブツリーのノード数) = 1.06
  • (splitしたのにベータカットが発生した回数)/(splitした回数) = 0.0198
  • (splitしたのにベータカットが発生した回数)/(全ノード数) = 0.0000230

となりました。
日本語で書き直すと

  • splitした局面でのベータカットによって発生するロスは6%程度ノード数を増やすだけ
  • splitを行ったとき98%はALLノード、2%はCUTノード
  • splitされるCUTノードは探索木全体の0.002%

あまり伸び代がない感じです。
本当はCUTノードでsplitしたときのロスとして
逐次探索時のムーブオーダリングが保たれないことも考慮すべきですが*1
それにしても数字が良すぎる気が。

*1:例えば、スレッドAが(ベータカットを引き起こす)オーダリングの前の方の手を考えている間にスレッドBが後ろの方の手を全て探索してしまうとか