Simple implementation of strong YBWC
authorMarco Costalba <mcostalba@gmail.com>
Thu, 13 May 2010 08:06:27 +0000 (10:06 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 20 May 2010 20:17:47 +0000 (21:17 +0100)
No gain in the worst case of 2 threads, but also no
loss and good potential for QUAD or OCTAL machines.

After 922 games at 1+0 with 2 threads

Mod vs Orig +143 =533 -143 +0 ELO

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp

index 1a01601b8144f9d68a8cdd0b3c30356acc0d5d68..a349fd6c7687c33002fbad2b5f6821a4785650b3 100644 (file)
@@ -234,6 +234,9 @@ namespace {
   // better than the second best move.
   const Value EasyMoveMargin = Value(0x200);
 
+  // Maximum number of moves to try before to split (strong YBWC)
+  const int MaximumSplitMove = 3;
+
   // Last seconds noise filtering (LSN)
   const bool UseLSNFiltering = true;
   const int LSNTime = 4000; // In milliseconds
@@ -1363,6 +1366,7 @@ namespace {
       if (   TM.active_threads() > 1
           && bestValue < beta
           && depth >= MinimumSplitDepth
+          && (PvNode || moveCount > MaximumSplitMove * MinimumSplitDepth / depth)
           && Iteration <= 99
           && TM.available_thread_exists(threadID)
           && !AbortSearch