Skip to content

Commit

Permalink
Improve multiPV mode
Browse files Browse the repository at this point in the history
Skip all moves during the Non-PV (zero-window) search which will be
searched as PV moves later anyways. We also wake sure the moves will
be reported to the GUI despite they're not being searched — some GUIs
may get confused otherwise, and it would unnecessarily complicate the
code.

Tested with MultiPV=4
STC
http://tests.stockfishchess.org/tests/view/5ce7137c0ebc5925cf070d69
LLR: 2.95 (-2.94,2.94) [0.50,4.50]
Total: 8233 W: 3708 L: 3424 D: 1101

LTC
http://tests.stockfishchess.org/tests/view/5ce798d60ebc5925cf071d17
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 7369 W: 3197 L: 2911 D: 1261

Closes official-stockfish#2163

No functional change. (in single PV mode)
  • Loading branch information
joergoster authored and mstembera committed Aug 29, 2019
1 parent 61f111b commit c34317b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
8 changes: 7 additions & 1 deletion src/search.cpp
Expand Up @@ -292,7 +292,7 @@ void Thread::search() {
bestValue = delta = alpha = -VALUE_INFINITE;
beta = VALUE_INFINITE;

size_t multiPV = Options["MultiPV"];
multiPV = Options["MultiPV"];
Skill skill(Options["Skill Level"]);

// When playing with strength handicap enable MultiPV search that we will
Expand Down Expand Up @@ -870,6 +870,12 @@ namespace {
sync_cout << "info depth " << depth / ONE_PLY
<< " currmove " << UCI::move(move, pos.is_chess960())
<< " currmovenumber " << moveCount + thisThread->pvIdx << sync_endl;

// In MultiPV mode also skip moves which will be searched later as PV moves
if (rootNode && std::count(thisThread->rootMoves.begin() + thisThread->pvIdx + 1,
thisThread->rootMoves.begin() + thisThread->multiPV, move))
continue;

if (PvNode)
(ss+1)->pv = nullptr;

Expand Down
2 changes: 1 addition & 1 deletion src/thread.h
Expand Up @@ -59,7 +59,7 @@ class Thread {

Pawns::Table pawnsTable;
Material::Table materialTable;
size_t pvIdx, pvLast, shuffleExts;
size_t pvIdx, multiPV, pvLast, shuffleExts;
int selDepth, nmpMinPly;
Color nmpColor;
std::atomic<uint64_t> nodes, tbHits, bestMoveChanges;
Expand Down

0 comments on commit c34317b

Please sign in to comment.