From eb50793cffd8ac059450a76760e2c3f8ae9cc931 Mon Sep 17 00:00:00 2001 From: Joona Kiiski Date: Mon, 7 Jul 2014 20:37:06 +0100 Subject: [PATCH] Retire FakeSplit - Currently broken - Never been really useful - Does not work well with new splitting model Verified for no regression at STC with 3 threads: LLR: 2.96 (-2.94,2.94) [-6.00,0.00] Total: 81905 W: 12122 L: 12381 D: 57402 No functional change --- src/search.cpp | 7 ++----- src/thread.cpp | 21 +++++++-------------- src/thread.h | 1 - 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 8f9a369a..a2138d42 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -52,9 +52,6 @@ using namespace Search; namespace { - // Set to true to force running with one thread. Used for debugging - const bool FakeSplit = false; - // Different node types, used as template parameter enum NodeType { Root, PV, NonPV }; @@ -987,8 +984,8 @@ moves_loop: // When in check and at SpNode search starts from here { assert(bestValue > -VALUE_INFINITE && bestValue < beta); - thisThread->split(pos, ss, alpha, beta, &bestValue, &bestMove, - depth, moveCount, &mp, NT, cutNode); + thisThread->split(pos, ss, alpha, beta, &bestValue, &bestMove, + depth, moveCount, &mp, NT, cutNode); if (Signals.stop || thisThread->cutoff_occurred()) return VALUE_ZERO; diff --git a/src/thread.cpp b/src/thread.cpp index 62ff3764..3b98ac63 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -255,7 +255,6 @@ Thread* ThreadPool::available_slave(const Thread* master) const { // leave their idle loops and call search(). When all threads have returned from // search() then split() returns. -template void Thread::split(Position& pos, const Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove, Depth depth, int moveCount, MovePicker* movePicker, int nodeType, bool cutNode) { @@ -297,14 +296,13 @@ void Thread::split(Position& pos, const Stack* ss, Value alpha, Value beta, Valu activeSplitPoint = &sp; activePosition = NULL; - if (!Fake) - for (Thread* slave; (slave = Threads.available_slave(this)) != NULL; ) - { - sp.slavesMask.set(slave->idx); - slave->activeSplitPoint = &sp; - slave->searching = true; // Slave leaves idle_loop() - slave->notify_one(); // Could be sleeping - } + for (Thread* slave; (slave = Threads.available_slave(this)) != NULL; ) + { + sp.slavesMask.set(slave->idx); + slave->activeSplitPoint = &sp; + slave->searching = true; // Slave leaves idle_loop() + slave->notify_one(); // Could be sleeping + } // Everything is set up. The master thread enters the idle loop, from which // it will instantly launch a search, because its 'searching' flag is set. @@ -339,11 +337,6 @@ void Thread::split(Position& pos, const Stack* ss, Value alpha, Value beta, Valu Threads.mutex.unlock(); } -// Explicit template instantiations -template void Thread::split(Position&, const Stack*, Value, Value, Value*, Move*, Depth, int, MovePicker*, int, bool); -template void Thread::split< true>(Position&, const Stack*, Value, Value, Value*, Move*, Depth, int, MovePicker*, int, bool); - - // wait_for_think_finished() waits for main thread to go to sleep then returns void ThreadPool::wait_for_think_finished() { diff --git a/src/thread.h b/src/thread.h index 35654312..26aed392 100644 --- a/src/thread.h +++ b/src/thread.h @@ -117,7 +117,6 @@ struct Thread : public ThreadBase { bool cutoff_occurred() const; bool available_to(const Thread* master) const; - template void split(Position& pos, const Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove, Depth depth, int moveCount, MovePicker* movePicker, int nodeType, bool cutNode); -- 2.39.2