Optimal tune for 8 cores
authorMarco Costalba <mcostalba@gmail.com>
Fri, 8 Jan 2010 11:51:11 +0000 (12:51 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Fri, 8 Jan 2010 11:58:51 +0000 (12:58 +0100)
After deep tests Louis Zulli found on his OCTAL machine that
best setup for an 8 core CPU is as following

"Threads" = 8
"Minimum Split Depth" = 6 or 7 (mSD)
"Maximum Number of Threads per Split Point" = not important (MNTpSP)

Here are testing results:

mSD7 (8 threads) vs mSD4 (8 threads): 291 - 120 - 589
mSD6 vs mSD7: 168 - 188 - 644
mSD6-MNTpSP5 vs mSD6-MNTpSP6: 172 - 172 - 656
SF-7threads vs SF-8threads: 179 - 204 - 617

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

index 3ee823e57d38cb7d9bfe9af2736b7e352696c6bf..9bcd960b6a157f535d44dfaa030f64d1519849ef 100644 (file)
@@ -196,15 +196,14 @@ void init_uci_options() {
 
   load_defaults(options);
 
-  // Limit the default value of "Threads" to 7 even if we have 8 CPU cores.
-  // According to Ken Dail's tests, Glaurung plays much better with 7 than
-  // with 8 threads.  This is weird, but it is probably difficult to find out
-  // why before I have a 8-core computer to experiment with myself.
-  assert(options.find("Threads") != options.end());
+  // Set optimal value for parameter "Minimum Split Depth"
+  // according to number of available cores.
   assert(options.find("Minimum Split Depth") != options.end());
 
-  options["Threads"].defaultValue = stringify(Min(cpu_count(), 7));
-  options["Threads"].currentValue = stringify(Min(cpu_count(), 7));
+  Option& msd = options["Minimum Split Depth"];
+
+  if (cpu_count() >= 8)
+      msd.defaultValue = msd.currentValue = stringify(7);
 }