Bonjour, mostly to testers and programmers,
I'm getting a laptop next week with Intel Core Ultra 9, this comes with 24 cores, of which 8 are P and 16 E.
Core performance, and therefore nps one guesses, are not the same between P and E. How they differ is yet to be discovered here.
This will have implications (or will it?) for cutechess high concurrency engine-engine matches since we don't know which engine in any one pair will get a P core or an E core. This would seem to induce a random bias into the games scores and noisy results. True, false? How to get round it?
Concurrent testing, some cores are more equal than others
Moderator: Ras
-
chrisw
- Posts: 4979
- Joined: Tue Apr 03, 2012 4:28 pm
- Location: Anywhere but the Western Empire
- Full name: Christopher Whittington
-
Modern Times
- Posts: 3875
- Joined: Thu Jun 07, 2012 11:02 pm
Re: Concurrent testing, some cores are more equal than others
I wouldn't say that CPU is a good option for ratings list testing. Double the amount of E cores than P cores.
My earlier i7 12700 desktop has a different mix - 8 P cores and 4 E cores. On that, you don't lose a lot by disabling the E cores and running concurrency 8 on the remaining P cores.
My earlier i7 12700 desktop has a different mix - 8 P cores and 4 E cores. On that, you don't lose a lot by disabling the E cores and running concurrency 8 on the remaining P cores.
-
Aleks Peshkov
- Posts: 1004
- Joined: Sun Nov 19, 2006 9:16 pm
- Location: Russia
- Full name: Aleks Peshkov
Re: Concurrent testing, some cores are more equal than others
I have only AMD and Linux, but I prefer to use `fastchess restart=on` option (per each engine config). More chances that lucky and unlucky performance startups compensate each other.
-
chrisw
- Posts: 4979
- Joined: Tue Apr 03, 2012 4:28 pm
- Location: Anywhere but the Western Empire
- Full name: Christopher Whittington
Re: Concurrent testing, some cores are more equal than others
Yes, you have a different problem than I. You’re forced for rating list work to use movetime, so mixing P and E cores will introduce noise. My case is development, so I can measure progress and perform comparative testing using nodes as the limit, not time. Constant nodes each move. Then it matters not if one engine is running slower than the other via cores or other factors.Modern Times wrote: ↑Thu Jun 04, 2026 2:20 pm I wouldn't say that CPU is a good option for ratings list testing. Double the amount of E cores than P cores.
My earlier i7 12700 desktop has a different mix - 8 P cores and 4 E cores. On that, you don't lose a lot by disabling the E cores and running concurrency 8 on the remaining P cores.
Actually, thinking more, I tell a lie here. I can make comparative tests between different versions of my own slightly changed engine against original itself as long as those changes haven’t affected NPS. Minor search tweaks would be ok, an entirely new and slower net would not.
-
cpeters
- Posts: 241
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Concurrent testing, some cores are more equal than others
You should be able to enumerate/get the precise number for each core (and its attributes) from the system and make use of that value. Under Linux/*BSD - which you don't operate on - you would have to use to play with.
Windows might provide you with something similarily useful (perhaps wait a little; progress is underway:
https://github.com/microsoft/coreutils)
Maybe disable things/cores before boot (effzweitaste) in your personal computer.
Code: Select all
tasksetWindows might provide you with something similarily useful (perhaps wait a little; progress is underway:
https://github.com/microsoft/coreutils)
Maybe disable things/cores before boot (effzweitaste) in your personal computer.
-
adnoh
- Posts: 78
- Joined: Tue Jun 26, 2007 6:31 am
- Full name: Charles Wong
-
towforce
- Posts: 13117
- Joined: Thu Mar 09, 2006 12:57 am
- Location: Birmingham UK
- Full name: Graham Laight
Re: Concurrent testing, some cores are more equal than others
For several reasons, the best approach is probably:
1. run some code on startup that does a simple task using multiple threads
2. try it with varying numbers of cores
3. pick the number of cores that does the task quickest
4. get the task entirely cleared from memory
5. start the chess task
1. run some code on startup that does a simple task using multiple threads
2. try it with varying numbers of cores
3. pick the number of cores that does the task quickest
4. get the task entirely cleared from memory
5. start the chess task
Human chess is partly about tactics and strategy, but mostly about memory
-
cpeters
- Posts: 241
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Concurrent testing, some cores are more equal than others
Why the guessing? The cores get their attributes (P/E) not at runtime/dynamically - it's fixed. You may even disable them (either P/E) in UEFI. And they get a number (which will likely never change). So with the right tool, you can easily (under Linux and *BSD - the solution for windows should be googable) direct a task to a specific core.towforce wrote: ↑Fri Jun 05, 2026 9:08 am For several reasons, the best approach is probably:
1. run some code on startup that does a simple task using multiple threads
2. try it with varying numbers of cores
3. pick the number of cores that does the task quickest
4. get the task entirely cleared from memory
5. start the chess task
-
towforce
- Posts: 13117
- Joined: Thu Mar 09, 2006 12:57 am
- Location: Birmingham UK
- Full name: Graham Laight
Re: Concurrent testing, some cores are more equal than others
"So with the right tool..." - if a tool can find out, why can't the engine? Can the engine pick its own cores, or must this decision be made before the engine starts? If so, could a "starter" program do the testing and then start the main engine with a good configuration before ending itself?cpeters wrote: ↑Fri Jun 05, 2026 10:34 pmWhy the guessing? The cores get their attributes (P/E) not at runtime/dynamically - it's fixed. You may even disable them (either P/E) in UEFI. And they get a number (which will likely never change). So with the right tool, you can easily (under Linux and *BSD - the solution for windows should be googable) direct a task to a specific core.towforce wrote: ↑Fri Jun 05, 2026 9:08 am For several reasons, the best approach is probably:
1. run some code on startup that does a simple task using multiple threads
2. try it with varying numbers of cores
3. pick the number of cores that does the task quickest
4. get the task entirely cleared from memory
5. start the chess task
Is it fair to say that when the engine starts, it won't know what cores are available? Other processes might be using some cores, the device configuration may have changed, or the engine may be running on a different device.
Each task an engine has to do could be rated for suitability for either a P (performance) core or an E (efficiency) core, and if their aren't enough P cores for all tasks, relatively light tasks can be directed to available E cores.
My quoted post above suggesting trying different combinations of cores was an idea I had to actually find the answer out at runtime rather than setting a fixed combination which may not always be the best. Also, just using all the available cores won't always be the best way to go.
Human chess is partly about tactics and strategy, but mostly about memory
-
cpeters
- Posts: 241
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Concurrent testing, some cores are more equal than others
https://man7.org/linux/man-pages/man1/taskset.1.htmltowforce wrote: ↑Sat Jun 06, 2026 12:05 am
"So with the right tool..." - if a tool can find out, why can't the engine? Can the engine pick its own cores, or must this decision be made before the engine starts? If so, could a "starter" program do the testing and then start the main engine with a good configuration before ending itself?
The rest of your post I'm too stupid/annoyed to process/evaluate.