Chess Engine testing with hyperthreaded machines

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

AndrewGrant
Posts: 1750
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Chess Engine testing with hyperthreaded machines

Post by AndrewGrant »

This has popped up again over on the Stockfish forums :
https://groups.google.com/forum/?fromgr ... ya3HfsoObE

What do you guys think about testing using hyperthreaded machines?

I remember at one time seeing people say no for older generation cpus, but yes for high end i7's, i9's, Ryzen.

I've got a 16core threadripper, and would love to use a concurrency of 30 to test, rather than 15
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
syzygy
Posts: 5557
Joined: Tue Feb 28, 2012 11:56 pm

Re: Chess Engine testing with hyperthreaded machines

Post by syzygy »

AndrewGrant wrote:What do you guys think about testing using hyperthreaded machines?
If you're asking about fishtest, then the answer has always been clear: don't do it. Just follow the instructions if you want to be helpful rather than a source of noise.
I've got a 16core threadripper, and would love to use a concurrency of 30 to test, rather than 15
So what would happen with 30 threads on 16 cores? Most cores will get 2 threads, some only 1. Those threads running on 1 core will be faster. Engines using that core will get higher nps and create noise.

If you want to be helpful to Stockfish development, please just follow the instructions.
AndrewGrant
Posts: 1750
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Chess Engine testing with hyperthreaded machines

Post by AndrewGrant »

If you want to be helpful to Stockfish development, please just follow the instructions.


Of course. But I'm talking about for my own engine, or testing others engines. I'm yet to see any convincing data that says you cannot use HT when testing.
1. Those threads running on 1 core will be faster. Engines using that core will get higher nps and create noise.
If you scale the TC to account for the lowered NPS when HT is on, and then set the concurrency to be all hyperthreads - 1, then only 1 thread has that possibility. Even then, that thread is sharing it's time with the OS. So If I set my CPU to use 31/32, I would get 15 cores with 2 engines running, and 1 core with 1 engine running.

The noise from the single "1 core 1 engine" is overshadowed by the other 15 cores. AND I'm not convinced the quoted portion is true. I'll run some tests when I get the chance.

It seems to me like even if that noise was created, having 31 instead of 15 data points is worth having 1/31th of the games being noisy.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )