Reduce more CUT nodes only if parent node is reduced
authorMarco Costalba <mcostalba@gmail.com>
Thu, 13 Jun 2013 17:53:14 +0000 (19:53 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 13 Jun 2013 18:05:02 +0000 (20:05 +0200)
So when we are doing a LMR search at the parent ALL node.

This patch didn't prove stronger at 60" TC
LLR: -2.97 (-2.94,2.94)
Total: 22398 W: 4070 L: 4060 D: 14268

But, first, it scores at 50%, second (and most important for me) the opposite,
i.e. normal reduction when parent node is not reduced, seems very bad:
LLR: -2.95 (-2.94,2.94)
Total: 7036 W: 1446 L: 1534 D: 4056

According to Don, this idea of increased reduction of CUT nodes
works because if parent node is reduced, missing a cut-off due to
reduced depth search (meaning position is somehow tricky) forces
a full depth research at parent node, giving due insight in this
set of sensible positions.

IOW if we expect a node to fail-high at depth n, then we assume it
should fail-high also at depth n-1, if this doesn't happen it means
position is tricky enough to deserve a research at depth n+1.

bench: 4687419

src/search.cpp

index a10e1180c344a3af45a23bf293386d27cc48ddbf..bfab6a4e1cd2829408f1e0d849f3962ab9fd77db 100644 (file)
@@ -949,7 +949,7 @@ split_point_start: // At split points actual search starts from here
       {
           ss->reduction = reduction<PvNode>(depth, moveCount);
 
-          if (!PvNode && cutNode)
+          if (!PvNode && cutNode && (ss-1)->reduction)
               ss->reduction += ONE_PLY;
 
           if (move == countermoves[0] || move == countermoves[1])