Fix easy move bug in SMP mode
authormstembera <MissingEmail@email>
Mon, 14 Dec 2015 18:34:43 +0000 (18:34 +0000)
committerJoona Kiiski <joona@zoox.com>
Mon, 14 Dec 2015 18:47:12 +0000 (18:47 +0000)
Fix a bug where we could stop the search after only 10% of time used due to a matching easy move but later switch to a different move that was never pre-screened as easy due to SMP thread select.

STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 27227 W: 4910 L: 4800 D: 17517

LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 40368 W: 5826 L: 5733 D: 28809

Resolves #521

src/search.cpp

index e5c485f..6c7069e 100644 (file)
@@ -328,7 +328,7 @@ void MainThread::search() {
 
   // Check if there are threads with a better score than main thread.
   Thread* bestThread = this;
 
   // Check if there are threads with a better score than main thread.
   Thread* bestThread = this;
-  if (Options["MultiPV"] == 1 && !Skill(Options["Skill Level"]).enabled())
+  if (!easyPlayed && Options["MultiPV"] == 1 && !Skill(Options["Skill Level"]).enabled())
       for (Thread* th : Threads)
           if (   th->completedDepth > bestThread->completedDepth
               && th->rootMoves[0].score > bestThread->rootMoves[0].score)
       for (Thread* th : Threads)
           if (   th->completedDepth > bestThread->completedDepth
               && th->rootMoves[0].score > bestThread->rootMoves[0].score)