Skip to content

Commit

Permalink
Compute SplitPoint::spLevel on the fly
Browse files Browse the repository at this point in the history
And retire a redundant field. This is important also
from a concept point of view becuase we want to keep
SMP structures as simple as possible with the only
strictly necessary data.

Verified with

dbg_hit_on(sp->spLevel != level)

that the values are 100% the same out of more 50K samples.

No functional change.
  • Loading branch information
mcostalba committed Feb 18, 2015
1 parent 6656ed8 commit dccaa14
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
9 changes: 7 additions & 2 deletions src/search.cpp
Expand Up @@ -1604,7 +1604,12 @@ void Thread::idle_loop() {
&& sp->slavesCount < MAX_SLAVES_PER_SPLITPOINT
&& available_to(Threads[i]))
{
int score = sp->spLevel * 256 * 256 + sp->slavesCount * 256 - sp->depth * 1;
// Compute the recursive split points chain size
int level = -1;
for (SplitPoint* spp = Threads[i]->activeSplitPoint; spp; spp = spp->parentSplitPoint)
level++;

int score = level * 256 * 256 + sp->slavesCount * 256 - sp->depth * 1;

if (score < bestScore)
{
Expand All @@ -1618,7 +1623,7 @@ void Thread::idle_loop() {
if (bestSp)
{
sp = bestSp;

// Recheck the conditions under lock protection
Threads.mutex.lock();
sp->mutex.lock();
Expand Down
3 changes: 1 addition & 2 deletions src/thread.cpp
Expand Up @@ -154,7 +154,6 @@ void Thread::split(Position& pos, Stack* ss, Value alpha, Value beta, Value* bes

sp.masterThread = this;
sp.parentSplitPoint = activeSplitPoint;
sp.spLevel = activeSplitPoint ? activeSplitPoint->spLevel + 1 : 0;
sp.slavesMask = 0, sp.slavesMask.set(idx);
sp.slavesCount = 1;
sp.depth = depth;
Expand Down Expand Up @@ -184,7 +183,7 @@ void Thread::split(Position& pos, Stack* ss, Value alpha, Value beta, Value* bes

Thread* slave;

while ( sp.slavesCount < MAX_SLAVES_PER_SPLITPOINT
while ( sp.slavesCount < MAX_SLAVES_PER_SPLITPOINT
&& (slave = Threads.available_slave(this)) != NULL)
{
sp.slavesMask.set(slave->idx);
Expand Down
1 change: 0 additions & 1 deletion src/thread.h
Expand Up @@ -73,7 +73,6 @@ struct SplitPoint {
const Position* pos;
Search::Stack* ss;
Thread* masterThread;
int spLevel;
Depth depth;
Value beta;
int nodeType;
Expand Down

0 comments on commit dccaa14

Please sign in to comment.