]> git.sesse.net Git - stockfish/commitdiff
Use predicted depth for history pruning
authorVoyagerOne <excelgeek@gmail.com>
Fri, 12 Aug 2016 17:55:12 +0000 (13:55 -0400)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 15 Aug 2016 12:45:40 +0000 (14:45 +0200)
STC: (Yellow)
LLR: -2.96 (-2.94,2.94) [0.00,4.00]
Total: 69115 W: 12880 L: 12797 D: 43438

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,4.00]
Total: 124163 W: 16923 L: 16442 D: 90798

Note: Note based off past experiments / patches... history pruning
is quite TC sensitive. I believe the reason for this TC dependency
is that the CMH/FMH is a very large table that takes time to fill
up with. In addition having more time for will increase the accuracy
of the stats' value.

Bench: 7351698

src/search.cpp

index 8b6e1690404bf5317f3dab7bf8fde61c4fc802d7..0261a481beb4c5f187e230384859ba92d9de4d47 100644 (file)
@@ -915,16 +915,16 @@ moves_loop: // When in check search starts from here
           if (moveCountPruning)
               continue;
 
           if (moveCountPruning)
               continue;
 
+          predictedDepth = std::max(newDepth - reduction<PvNode>(improving, depth, moveCount), DEPTH_ZERO);
+
           // Countermoves based pruning
           // Countermoves based pruning
-          if (   depth <= 4 * ONE_PLY
+          if (   predictedDepth < 3 * ONE_PLY
               && move != ss->killers[0]
               && (!cmh  || (*cmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
               && (!fmh  || (*fmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
               && (!fmh2 || (*fmh2)[moved_piece][to_sq(move)] < VALUE_ZERO || (cmh && fmh)))
               continue;
 
               && move != ss->killers[0]
               && (!cmh  || (*cmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
               && (!fmh  || (*fmh )[moved_piece][to_sq(move)] < VALUE_ZERO)
               && (!fmh2 || (*fmh2)[moved_piece][to_sq(move)] < VALUE_ZERO || (cmh && fmh)))
               continue;
 
-          predictedDepth = std::max(newDepth - reduction<PvNode>(improving, depth, moveCount), DEPTH_ZERO);
-
           // Futility pruning: parent node
           if (   predictedDepth < 7 * ONE_PLY
               && ss->staticEval + 256 + 200 * predictedDepth / ONE_PLY <= alpha)
           // Futility pruning: parent node
           if (   predictedDepth < 7 * ONE_PLY
               && ss->staticEval + 256 + 200 * predictedDepth / ONE_PLY <= alpha)
@@ -1397,7 +1397,7 @@ moves_loop: // When in check search starts from here
         ss->killers[1] = ss->killers[0];
         ss->killers[0] = move;
     }
         ss->killers[1] = ss->killers[0];
         ss->killers[0] = move;
     }
-       
+
     Color c = pos.side_to_move();
     Value bonus = Value((depth / ONE_PLY) * (depth / ONE_PLY) + 2 * depth / ONE_PLY - 2);
 
     Color c = pos.side_to_move();
     Value bonus = Value((depth / ONE_PLY) * (depth / ONE_PLY) + 2 * depth / ONE_PLY - 2);