mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 10:06:26 +08:00
Upon changing the number of threads, make sure all threads are bound
The heuristic to avoid thread binding if less than 8 threads are requested resulted in the first 7 threads not being bound. The branch was verified to yield a roughly 13% speedup by @CoffeeOne on the appropriate hardware and OS, and an earlier version of this patch tested well on his machine: http://tests.stockfishchess.org/tests/view/5a3693480ebc590ccbb8be5a ELO: 9.24 +-4.6 (95%) LOS: 100.0% Total: 5000 W: 634 L: 501 D: 3865 To make sure all threads (including mainThread) are bound as soon as the total number exceeds 7, recreate all threads on a change of thread number. To do this, unify Threads::init, Threads::exit and Threads::set are unified in a single Threads::set function that goes through the needed steps. The code includes several suggestions from @joergoster. Fixes issue #1312 No functional change
This commit is contained in:
committed by
Marco Costalba
parent
2198cd0524
commit
1c50d8cbf5
@@ -96,9 +96,8 @@ struct MainThread : public Thread {
|
||||
|
||||
struct ThreadPool : public std::vector<Thread*> {
|
||||
|
||||
void init(size_t); // No constructor and destructor, threads rely on globals that should
|
||||
void exit(); // be initialized and valid during the whole thread lifetime.
|
||||
void start_thinking(Position&, StateListPtr&, const Search::LimitsType&, bool = false);
|
||||
void clear();
|
||||
void set(size_t);
|
||||
|
||||
MainThread* main() const { return static_cast<MainThread*>(front()); }
|
||||
|
||||
Reference in New Issue
Block a user