Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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 <mcostalba@gmail.com>
  • Loading branch information
mcostalba committed Apr 22, 2012
1 parent ce159b1 commit be3b8f3
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 40 deletions.
38 changes: 0 additions & 38 deletions src/search.cpp
Expand Up @@ -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();

Expand All @@ -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)
}
}
}
}
}
Expand Down
1 change: 0 additions & 1 deletion src/thread.cpp
Expand Up @@ -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;
Expand Down
1 change: 0 additions & 1 deletion src/thread.h
Expand Up @@ -57,7 +57,6 @@ struct SplitPoint {
volatile Move bestMove;
volatile int moveCount;
volatile bool cutoff;
volatile bool allSlavesRunning;
};


Expand Down

0 comments on commit be3b8f3

Please sign in to comment.