Ideas to improve SMP scaling
Posted: Mon Apr 03, 2017 2:28 am
So far, I did the following:
Any other idea worth trying ?
- Basic Lazy SMP: a thread pool doing a list of jobs (each job is an iteration of the ID loop, inclusive of aspiration windows inner loop). No synchronization.
- Stop useless work "immediately": when a depth is completed, all other threads working on it (or below) are stopped. They report back to mission control, and find a useful job to work on. This was a clear gain in testing.
- Find a useful job to do: when a thread is looking for a depth to work on, it looks for how many other threads are working on a given depth or above. If half or more, then move on to a higher depth. This rule is recursive, eventually we find a depth high enough to work on. Also a clear gain in testing.
Any other idea worth trying ?