diff --git a/src/misc.cpp b/src/misc.cpp index 0ca56571..28eff708 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -24,10 +24,6 @@ #include "misc.h" #include "thread.h" -#ifdef __hpux -# include -#endif - using namespace std; /// Version number. If Version is left empty, then compile date, in the @@ -169,31 +165,6 @@ std::ostream& operator<<(std::ostream& os, SyncCout sc) { void start_logger(bool b) { Logger::start(b); } -/// cpu_count() tries to detect the number of CPU cores - -int cpu_count() { - -#ifdef _WIN32 - SYSTEM_INFO s; - GetSystemInfo(&s); - return s.dwNumberOfProcessors; -#else - -# if defined(_SC_NPROCESSORS_ONLN) - return sysconf(_SC_NPROCESSORS_ONLN); -# elif defined(__hpux) - struct pst_dynamic psd; - if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) == -1) - return 1; - return psd.psd_proc_cnt; -# else - return 1; -# endif - -#endif -} - - /// timed_wait() waits for msec milliseconds. It is mainly an helper to wrap /// conversion from milliseconds to struct timespec, as used by pthreads. diff --git a/src/misc.h b/src/misc.h index ea1e55f1..f14308af 100644 --- a/src/misc.h +++ b/src/misc.h @@ -27,7 +27,6 @@ #include "types.h" extern const std::string engine_info(bool to_uci = false); -extern int cpu_count(); extern void timed_wait(WaitCondition&, Lock&, int); extern void prefetch(char* addr); extern void start_logger(bool b); diff --git a/src/platform.h b/src/platform.h index 206ee4e9..af7795b9 100644 --- a/src/platform.h +++ b/src/platform.h @@ -40,7 +40,6 @@ typedef unsigned __int64 uint64_t; #else # include -# include // Used by sysconf(_SC_NPROCESSORS_ONLN) #endif #ifndef _WIN32 // Linux - Unix diff --git a/src/thread.cpp b/src/thread.cpp index 1772a419..08ac30e1 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -217,6 +217,13 @@ void ThreadPool::read_uci_options() { assert(requested > 0); + // Value 0 has a special meaning: We determine the optimal minimum split depth + // automatically. Anyhow the minimumSplitDepth should never be under 4 plies. + if (!minimumSplitDepth) + minimumSplitDepth = (requested < 8 ? 4 : 7) * ONE_PLY; + else + minimumSplitDepth = std::max(4 * ONE_PLY, minimumSplitDepth); + while (size() < requested) push_back(new_thread()); diff --git a/src/ucioption.cpp b/src/ucioption.cpp index 5cc0de56..384d9317 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -51,14 +51,9 @@ bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const /// init() initializes the UCI options to their hard coded default values -/// and initializes the default value of "Threads" and "Min Split Depth" -/// parameters according to the number of CPU cores detected. void init(OptionsMap& o) { - int cpus = std::min(cpu_count(), MAX_THREADS); - int msd = cpus < 8 ? 4 : 7; - o["Write Debug Log"] = Option(false, on_logger); o["Write Search Log"] = Option(false); o["Search Log Filename"] = Option("SearchLog.txt"); @@ -74,9 +69,9 @@ void init(OptionsMap& o) { o["Space"] = Option(100, 0, 200, on_eval); o["Aggressiveness"] = Option(100, 0, 200, on_eval); o["Cowardice"] = Option(100, 0, 200, on_eval); - o["Min Split Depth"] = Option(msd, 4, 12, on_threads); - o["Max Threads per Split Point"] = Option(5, 4, 8, on_threads); - o["Threads"] = Option(cpus, 1, MAX_THREADS, on_threads); + o["Min Split Depth"] = Option(0, 0, 12, on_threads); + o["Max Threads per Split Point"] = Option(5, 4, 8, on_threads); + o["Threads"] = Option(1, 1, MAX_THREADS, on_threads); o["Idle Threads Sleep"] = Option(true); o["Hash"] = Option(32, 1, 8192, on_hash_size); o["Clear Hash"] = Option(on_clear_hash);