CPU's don't work that way. We pretend that a 4 core machine is like 4 separate 1 core machines but that isn't the way it works.Lavir wrote:That would surely be the best solution if no much use is done of the PC, however in the case he wants to use some other application that requires CPU use not just limited to little spikes but semi-permanent, using 4 cores with HT can produce some unpredictability as Windows will switch physical cores around (and probably set some threads to logical processes instead), especially if the engines are set with lower priority. Using affinities will prevent this, but in that case it will be just like using the full 4 cores without HT, and could produce the same problems that would arise in that case.Laskos wrote: Why not 4 cores with HT on? You will still have some CPU time available for other small tasks.
So it all depends on what use is made of the PC. If it is only surfing etc. then 4 cores/HT would probably be the best solution, but if instead a more resourceful use of the PC is done (as an example using Photoshop or similar applications that require CPU time always) then it's better to use 3 cores, in that way you are sure that in any case physical cores are used by the engines.
I did some studies a while back which seemed to indicate that thread do not get very even allocation. If you have a quad and run 4 equal jobs things will be relatively balanced. If you run 3, for some reason there was not balance, one or two would get more resources. Even in the presence of additional jobs such as a GUI we have found that this is the best formula for fairness - 4 cores, 4 tests.
Don't take my word for it. set up a test script. start up 1, 2, 3 or 4 programs at the same time and do a deep fixed depth search and exit and look at the times of each run. CPU's have advanced since I last performed this basic test and thus instead of guessing, give it a try!
We also have discovered that running 2 copies of the same binary gives that binary an advantage. This is in spite of the fact that our tester loads each program from scratch before each game. Maybe Bob or someone else can explain this but I assume that if you load the same binary it will share the same address space and perhaps gain something from caching.
The memory footprint of each program affects the other programs too. So testing on a single CPU is never going to be completely fair but there is not much that can be done about this. The proper way to test is to run each program on it's own CPU and give it dedicated access but for SP programs that is a big waste of resources since it leaves a lot of cores idling.
