From 005ad170c1dccdcd4ce73074302828ea22628b70 Mon Sep 17 00:00:00 2001 From: Joost VandeVondele Date: Wed, 25 Sep 2019 21:24:05 +0200 Subject: [PATCH] Adjust reductions based on the number of threads In lazySMP it makes sense to prune a little more, as multiple threads search wider. We thus increase the prefactor of the reductions slowly as a function of the threads. The prefactor of the log(threads) term is a parameter, this pull request uses 1/2 after testing. passed STC @ 8threads: LLR: 2.96 (-2.94,2.94) [0.50,4.50] Total: 118125 W: 23151 L: 22462 D: 72512 http://tests.stockfishchess.org/tests/view/5d8bbf4d0ebc59509180f217 passed LTC @ 8threads: LLR: 2.95 (-2.94,2.94) [0.00,3.50] Total: 67546 W: 10630 L: 10279 D: 46637 http://tests.stockfishchess.org/tests/view/5d8c463b0ebc5950918167e8 passed ~LTC @ 14threads: LLR: 2.95 (-2.94,2.94) [0.00,3.50] Total: 74271 W: 12421 L: 12040 D: 49810 http://tests.stockfishchess.org/tests/view/5d8db1f50ebc590f3beb24ef Note: A larger prefactor (1) passed similar tests at STC and LTC (8 threads), while a very large one (2) passed STC quickly but failed LTC (8 threads). For the single-threaded case there is no functional change. Closes https://github.com/official-stockfish/Stockfish/pull/2337 Bench: 4088701 Fixup: remove redundant code. --- src/main.cpp | 1 - src/search.cpp | 2 +- src/thread.cpp | 3 +++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f94a322c..40081e8d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -43,7 +43,6 @@ int main(int argc, char* argv[]) { Position::init(); Bitbases::init(); Endgames::init(); - Search::init(); Threads.set(Options["Threads"]); Search::clear(); // After threads are up diff --git a/src/search.cpp b/src/search.cpp index d34e1823..55df6172 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -191,7 +191,7 @@ namespace { void Search::init() { for (int i = 1; i < MAX_MOVES; ++i) - Reductions[i] = int(23.4 * std::log(i)); + Reductions[i] = int((23.4 + std::log(Threads.size()) / 2) * std::log(i)); } diff --git a/src/thread.cpp b/src/thread.cpp index f7445f98..90ec274d 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -148,6 +148,9 @@ void ThreadPool::set(size_t requested) { // Reallocate the hash with the new threadpool size TT.resize(Options["Hash"]); + + // Init thread number dependent search params. + Search::init(); } } -- 2.39.2