From: Marco Costalba Date: Sun, 22 Apr 2012 16:52:31 +0000 (+0100) Subject: Retire "Active reparenting" X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=be3b8f3ae939b19dfd36ebff3f485395083a3ab9;ds=inline Retire "Active reparenting" After 6K games at 60" + 0.1 on QUAD with 4 threads this implementation fails to show a measurable increase, result is well within error bar. Perhaps with 8 or more threads resut is better but we don't have the hardware to test. So retire for now and in case re-add in the future if it proves good on big machines. The only good news is that we don't have a regression and implementation is stable and bug-free, so could be reused somewhere in the future. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 21d5d786..bab8f398 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1844,7 +1844,6 @@ void Thread::idle_loop(SplitPoint* sp_master) { assert(is_searching); is_searching = false; - sp->allSlavesRunning = false; sp->slavesMask &= ~(1ULL << idx); sp->nodes += pos.nodes_searched(); @@ -1860,43 +1859,6 @@ void Thread::idle_loop(SplitPoint* sp_master) { // our feet by the sp master. Also accessing other Thread objects is // unsafe because if we are exiting there is a chance are already freed. lock_release(sp->lock); - - // Try to reparent to the first split point, with still all slaves - // running, where we are available as a possible slave. - for (int i = 0; i < Threads.size(); i++) - { - Thread* th = &Threads[i]; - int spCnt = th->splitPointsCnt; - SplitPoint* latest = &th->splitPoints[spCnt ? spCnt - 1 : 0]; - - if ( this->is_available_to(th) - && spCnt > 0 - && !th->cutoff_occurred() - && latest->allSlavesRunning - && more_than_one(latest->slavesMask)) - { - lock_grab(latest->lock); - lock_grab(Threads.splitLock); - - // Retest all under lock protection, we are in the middle - // of a race storm here ! - if ( this->is_available_to(th) - && spCnt == th->splitPointsCnt - && !th->cutoff_occurred() - && latest->allSlavesRunning - && more_than_one(latest->slavesMask)) - { - latest->slavesMask |= 1ULL << idx; - curSplitPoint = latest; - is_searching = true; - } - - lock_release(Threads.splitLock); - lock_release(latest->lock); - - break; // Exit anyhow, only one try (enough in 99% of cases) - } - } } } } diff --git a/src/thread.cpp b/src/thread.cpp index 631834da..9cd63d95 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -319,7 +319,6 @@ Value ThreadsManager::split(Position& pos, Stack* ss, Value alpha, Value beta, sp->master = master; sp->cutoff = false; sp->slavesMask = 1ULL << master->idx; - sp->allSlavesRunning = true; sp->depth = depth; sp->bestMove = *bestMove; sp->threatMove = threatMove; diff --git a/src/thread.h b/src/thread.h index 9f0bb24a..3eb8fc9c 100644 --- a/src/thread.h +++ b/src/thread.h @@ -57,7 +57,6 @@ struct SplitPoint { volatile Move bestMove; volatile int moveCount; volatile bool cutoff; - volatile bool allSlavesRunning; };