See prune at higher depth
authorStefano80 <stefano.cardanobile@gmail.com>
Sat, 23 Jul 2016 07:49:18 +0000 (09:49 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 24 Jul 2016 06:55:58 +0000 (08:55 +0200)
Allow SEE pruning at higher depths in shallow depth
pruning using a threshold increasing with depth.

STC
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 35366 W: 7011 L: 6724 D: 21631

LTC
LLR: 2.97 (-2.94,2.94) [0.00,5.00]
Total: 15578 W: 2243 L: 2070 D: 11265

Bench: 8417887

src/search.cpp

index 59b1b1f..0260867 100644 (file)
@@ -930,9 +930,16 @@ moves_loop: // When in check search starts from here
               && ss->staticEval + futility_margin(predictedDepth) + 256 <= alpha)
               continue;
 
-          // Prune moves with negative SEE at low depths
-          if (predictedDepth < 4 * ONE_PLY && pos.see_sign(move) < VALUE_ZERO)
-              continue;
+          // Prune moves with negative SEE at low depths and below a decreasing
+          // threshold at higher depths.
+          if (predictedDepth < 8 * ONE_PLY)
+          {
+              Value see_v = predictedDepth < 4 * ONE_PLY ? VALUE_ZERO
+                            : -PawnValueMg * 2 * int(predictedDepth - 3 * ONE_PLY);
+
+              if (pos.see_sign(move) < see_v)
+                  continue;
+          }
       }
 
       // Speculative prefetch as early as possible