From dc0030de4fdece2851dd0072c9aea53695ed90ce Mon Sep 17 00:00:00 2001 From: joergoster Date: Sat, 30 Apr 2016 10:56:00 +0200 Subject: [PATCH] Fix LazySMP when searching to a fixed depth. Currently, helper threads will only search up to the specified depth limit. Now let them search until the main thread has finished the specified depth. On the other hand, we don't want to pick a thread with a higher search depth. This may be considered cheating. ;-) No functional change. --- src/search.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index a50f7990..6b894956 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -350,6 +350,7 @@ void MainThread::search() { Thread* bestThread = this; if ( !this->easyMovePlayed && Options["MultiPV"] == 1 + && !Limits.depth && !Skill(Options["Skill Level"]).enabled() && rootMoves[0].pv[0] != MOVE_NONE) { @@ -411,7 +412,7 @@ void Thread::search() { multiPV = std::min(multiPV, rootMoves.size()); // Iterative deepening loop until requested to stop or the target depth is reached. - while (++rootDepth < DEPTH_MAX && !Signals.stop && (!Limits.depth || rootDepth <= Limits.depth)) + while (++rootDepth < DEPTH_MAX && !Signals.stop && (!Limits.depth || Threads.main()->rootDepth <= Limits.depth)) { // Set up the new depths for the helper threads skipping on average every // 2nd ply (using a half-density matrix). @@ -1006,7 +1007,7 @@ moves_loop: // When in check search starts from here Depth r = reduction(improving, depth, moveCount); Value hValue = thisThread->history[pos.piece_on(to_sq(move))][to_sq(move)]; Value cmhValue = cmh[pos.piece_on(to_sq(move))][to_sq(move)]; - + const CounterMoveStats* fm = (ss - 2)->counterMoves; const CounterMoveStats* fm2 = (ss - 4)->counterMoves; Value fmValue = (fm ? (*fm)[pos.piece_on(to_sq(move))][to_sq(move)] : VALUE_ZERO); -- 2.39.2