From: Dubslow Date: Sun, 15 Jan 2023 10:08:33 +0000 (-0600) Subject: Remove `previousDepth` in favor of `completedDepth + 2` X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=d4d1cec29631f041adeec98adc5893b5c6a54969 Remove `previousDepth` in favor of `completedDepth + 2` Beyond the simplification, this could be considered a bugfix from a certain point of view. However, the effect is very subtle and essentially impossible for users to notice. 5372f81cc8 added about 2 Elo at LTC, but only for second and later `go` commands; now, with this patch, the first `go` command will also benefit from that gain. Games under time controls are unaffected (as per the tests). STC: https://tests.stockfishchess.org/tests/view/63c3d291330c0d3d051d48a8 LLR: 2.94 (-2.94,2.94) <-1.75,0.25> Total: 473792 W: 124858 L: 125104 D: 223830 Ptnml(0-2): 1338, 49653, 135063, 49601, 1241 LTC: https://tests.stockfishchess.org/tests/view/63c8cd56a83c702aac083bc9 LLR: 2.94 (-2.94,2.94) <-1.75,0.25> Total: 290728 W: 76926 L: 76978 D: 136824 Ptnml(0-2): 106, 27987, 89221, 27953, 97 closes https://github.com/official-stockfish/Stockfish/pull/4361 bench 4208265 --- diff --git a/src/search.cpp b/src/search.cpp index 4b2deadd..c748f1ff 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -242,9 +242,6 @@ void MainThread::search() { bestPreviousScore = bestThread->rootMoves[0].score; bestPreviousAverageScore = bestThread->rootMoves[0].averageScore; - for (Thread* th : Threads) - th->previousDepth = bestThread->completedDepth; - // Send again PV info if we have a new best thread if (bestThread != this) sync_cout << UCI::pv(bestThread->rootPos, bestThread->completedDepth) << sync_endl; @@ -1053,7 +1050,7 @@ moves_loop: // When in check, search starts here // a reduced search on all the other moves but the ttMove and if the // result is lower than ttValue minus a margin, then we will extend the ttMove. if ( !rootNode - && depth >= 4 - (thisThread->previousDepth > 24) + 2 * (PvNode && tte->is_pv()) + && depth >= 4 - (thisThread->completedDepth > 22) + 2 * (PvNode && tte->is_pv()) && move == ttMove && !excludedMove // Avoid recursive singular search /* && ttValue != VALUE_NONE Already implicit in the next condition */ diff --git a/src/thread.cpp b/src/thread.cpp index ca1a7c85..c680393e 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -60,7 +60,6 @@ void Thread::clear() { counterMoves.fill(MOVE_NONE); mainHistory.fill(0); captureHistory.fill(0); - previousDepth = 0; for (bool inCheck : { false, true }) for (StatsType c : { NoCaptures, Captures }) diff --git a/src/thread.h b/src/thread.h index 7566322c..46cdb11c 100644 --- a/src/thread.h +++ b/src/thread.h @@ -69,7 +69,7 @@ public: Position rootPos; StateInfo rootState; Search::RootMoves rootMoves; - Depth rootDepth, completedDepth, previousDepth; + Depth rootDepth, completedDepth; Value rootDelta; CounterMoveHistory counterMoves; ButterflyHistory mainHistory;