From: pb00068 Date: Thu, 9 Mar 2017 02:01:16 +0000 (-0800) Subject: Further simplify skipping of plies with threads X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=cc76524c2e36345fcbf5fcdd3618a5dafd166b62 Further simplify skipping of plies with threads No functional change Closes #1020 --- diff --git a/src/search.cpp b/src/search.cpp index 31e8b0b6..932aaf4d 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -132,19 +132,6 @@ namespace { Move pv[3]; }; - // skip half of the plies in blocks depending on the helper thread idx. - bool skip_ply(int idx, int ply) { - - idx = (idx - 1) % 20 + 1; // cycle after 20 threads. - - // number of successive plies to skip, depending on idx. - int ones = 1; - while (ones * (ones + 1) < idx) - ones++; - - return ((ply + idx - 1) / ones - ones) % 2 == 0; - } - EasyMoveManager EasyMove; Value DrawValue[COLOR_NB]; @@ -321,6 +308,9 @@ void MainThread::search() { std::cout << sync_endl; } +// Sizes and phases of the skip-blocks, used for distributing search depths across the threads. +static int skipsize[20] = {1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4}; +static int phase [20] = {0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7}; // Thread::search() is the main iterative deepening loop. It calls search() // repeatedly with increasing depth until the allocated thinking time has been @@ -358,13 +348,15 @@ void Thread::search() { multiPV = std::min(multiPV, rootMoves.size()); + int hIdx = (idx - 1) % 20; // helper index, cycle after 20 threads + // Iterative deepening loop until requested to stop or the target depth is reached while ( (rootDepth += ONE_PLY) < DEPTH_MAX && !Signals.stop && (!Limits.depth || Threads.main()->rootDepth / ONE_PLY <= Limits.depth)) { - // skip plies for helper threads - if (idx && skip_ply(idx, rootDepth / ONE_PLY + rootPos.game_ply())) + // skip half of the plies in blocks depending on game ply and helper index. + if (idx && ((rootDepth / ONE_PLY + rootPos.game_ply() + phase[hIdx]) / skipsize[hIdx]) % 2) continue; // Age out PV variability metric