From: Marco Costalba Date: Sat, 15 Mar 2014 20:13:43 +0000 (+0100) Subject: Remove "Max Threads per Split Point" UCI option X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=a1a7bc84da4a6f180179e437494dd485cba1711d;ds=sidebyside Remove "Max Threads per Split Point" UCI option Experimental patch to verify if drop of nps in endgames at very long TC is due to this. Suggested by Ronald de Man. bench: 7451319 --- diff --git a/polyglot.ini b/polyglot.ini index b851a33a..4e825f3c 100644 --- a/polyglot.ini +++ b/polyglot.ini @@ -30,7 +30,6 @@ Space = 100 Aggressiveness = 100 Cowardice = 100 Min Split Depth = 0 -Max Threads per Split Point = 5 Threads = 1 Idle Threads Sleep = true Hash = 128 diff --git a/src/thread.cpp b/src/thread.cpp index 9e96be6e..60c0ce71 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -88,7 +88,7 @@ Thread::Thread() /* : splitPoints() */ { // Value-initialization bug in MSVC maxPly = splitPointsSize = 0; activeSplitPoint = NULL; activePosition = NULL; - idx = Threads.size(); + idx = Threads.size(); // Starts from 0 } @@ -213,9 +213,8 @@ void ThreadPool::exit() { void ThreadPool::read_uci_options() { - maxThreadsPerSplitPoint = Options["Max Threads per Split Point"]; - minimumSplitDepth = Options["Min Split Depth"] * ONE_PLY; - size_t requested = Options["Threads"]; + minimumSplitDepth = Options["Min Split Depth"] * ONE_PLY; + size_t requested = Options["Threads"]; assert(requested > 0); @@ -297,12 +296,12 @@ void Thread::split(Position& pos, const Stack* ss, Value alpha, Value beta, Valu activeSplitPoint = &sp; activePosition = NULL; - size_t slavesCnt = 1; // This thread is always included + int slavesCnt = 1; // This thread is always included Thread* slave; - while ( (slave = Threads.available_slave(this)) != NULL - && ++slavesCnt <= Threads.maxThreadsPerSplitPoint && !Fake) + while (!Fake && (slave = Threads.available_slave(this)) != NULL) { + ++slavesCnt; sp.slavesMask |= 1ULL << slave->idx; slave->activeSplitPoint = &sp; slave->searching = true; // Slave leaves idle_loop() diff --git a/src/thread.h b/src/thread.h index c9152b22..ddeb4902 100644 --- a/src/thread.h +++ b/src/thread.h @@ -166,7 +166,6 @@ struct ThreadPool : public std::vector { bool sleepWhileIdle; Depth minimumSplitDepth; - size_t maxThreadsPerSplitPoint; Mutex mutex; ConditionVariable sleepCondition; TimerThread* timer; diff --git a/src/ucioption.cpp b/src/ucioption.cpp index 68a57bd5..eefacb22 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -70,7 +70,6 @@ void init(OptionsMap& o) { o["Aggressiveness"] = Option(100, 0, 200, on_eval); o["Cowardice"] = Option(100, 0, 200, on_eval); o["Min Split Depth"] = Option(0, 0, 12, on_threads); - o["Max Threads per Split Point"] = Option(5, 4, 8, on_threads); o["Threads"] = Option(1, 1, MAX_THREADS, on_threads); o["Idle Threads Sleep"] = Option(true); o["Hash"] = Option(32, 1, 16384, on_hash_size);