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: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=a1a7bc84da4a6f180179e437494dd485cba1711d;p=fairystockfish.git 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 b851a33..4e825f3 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 9e96be6..60c0ce7 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 c9152b2..ddeb490 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 68a57bd..eefacb2 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);