Skip to content

Commit

Permalink
Correctly prevent recursive verification in nmp.
Browse files Browse the repository at this point in the history
As discussed with @pb00068, the condition to prevent recursive verification
was not completely correct. This patch corrects that condition, and adds an
assert. In the current implementation, recursive verification needs to be
avoided in order not to break the verification of the move closer to the
root (i.e. to not set thisThread->nmp_min_ply to zero prematurely).

This patch is tested as a bug fix, based on and tested against PR #1609 .

passed STC:
http://tests.stockfishchess.org/tests/view/5b050f170ebc5914abc129c5
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 7875 W: 1669 L: 1523 D: 4683

passed LTC:
http://tests.stockfishchess.org/tests/view/5b0513970ebc5914abc129cd
LLR: 3.00 (-2.94,2.94) [-3.00,1.00]
Total: 24048 W: 3525 L: 3407 D: 17116

Bench changes at high depth.

Closes #1610
and    #1609

Bench: 4484288
  • Loading branch information
vondele authored and snicolet committed May 24, 2018
1 parent d702203 commit beaadd6
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/search.cpp
Expand Up @@ -773,11 +773,13 @@ namespace {
if (nullValue >= VALUE_MATE_IN_MAX_PLY)
nullValue = beta;

if (abs(beta) < VALUE_KNOWN_WIN && (depth < 12 * ONE_PLY || thisThread->nmp_min_ply))
if (thisThread->nmp_min_ply || (abs(beta) < VALUE_KNOWN_WIN && depth < 12 * ONE_PLY))
return nullValue;

// Do verification search at high depths. Disable null move pruning
// for side to move for the first part of the remaining search tree.
assert(!thisThread->nmp_min_ply); // Recursive verification is not allowed

// Do verification search at high depths, with null move pruning disabled
// for us, until ply exceeds nmp_min_ply.
thisThread->nmp_min_ply = ss->ply + 3 * (depth-R) / 4 - 1;
thisThread->nmp_color = us;

Expand Down

0 comments on commit beaadd6

Please sign in to comment.