From e316e432d0903189945d9669151d7222a4c953d2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ste=CC=81phane=20Nicolet?= Date: Sun, 4 Feb 2018 21:42:56 +0100 Subject: [PATCH] Revert "Implement old 'multipv' search" This revert the following commit: https://github.com/official-stockfish/Stockfish/commit/44a7db0f9ac02d2461aff39e25f1ac9107ffbfac Bug report by Ronald de Man in issue: https://github.com/official-stockfish/Stockfish/issues/1392 Bench: 5023629 --- src/search.cpp | 24 ++++++++---------------- src/thread.h | 2 +- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index f47507f7..b9ce9a62 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -297,7 +297,7 @@ void Thread::search() { mainThread->bestMoveChanges = 0; } - multiPV = Options["MultiPV"]; + size_t multiPV = Options["MultiPV"]; Skill skill(Options["Skill Level"]); // When playing with strength handicap enable MultiPV search that we will @@ -802,20 +802,12 @@ moves_loop: // When in check search starts from here if (move == excludedMove) continue; - if (rootNode) - { - // At root obey the "searchmoves" option and skip moves not listed in Root - // Move List. As a consequence any illegal move is also skipped. - if (!std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, - thisThread->rootMoves.end(), move)) - continue; - - // In MultiPV mode we not only skip PV moves which have already been searched, - // but also any other move except we have reached the last PV line. - if ( thisThread->PVIdx + 1 < thisThread->multiPV - && move != ttMove) - continue; - } + // At root obey the "searchmoves" option and skip moves not listed in Root + // Move List. As a consequence any illegal move is also skipped. In MultiPV + // mode we also skip PV moves which have been already searched. + if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, + thisThread->rootMoves.end(), move)) + continue; ss->moveCount = ++moveCount; @@ -1535,7 +1527,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { int elapsed = Time.elapsed() + 1; const RootMoves& rootMoves = pos.this_thread()->rootMoves; size_t PVIdx = pos.this_thread()->PVIdx; - size_t multiPV = pos.this_thread()->multiPV; + size_t multiPV = std::min((size_t)Options["MultiPV"], rootMoves.size()); uint64_t nodesSearched = Threads.nodes_searched(); uint64_t tbHits = Threads.tb_hits() + (TB::RootInTB ? rootMoves.size() : 0); diff --git a/src/thread.h b/src/thread.h index 494fdb15..13974497 100644 --- a/src/thread.h +++ b/src/thread.h @@ -60,7 +60,7 @@ public: Pawns::Table pawnsTable; Material::Table materialTable; Endgames endgames; - size_t PVIdx, multiPV; + size_t PVIdx; int selDepth, nmp_ply, nmp_odd; std::atomic nodes, tbHits; -- 2.39.2