You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
"Asymmetric machine architecture not supported" on Intel CPU with hybrid architecture #850
changed the title [-]Asymmetric machine architecture not supported: CPU cores with different number of sibling cores.[/-][+]"Asymmetric machine architecture not supported" on Intel CPU with hybrid architecture[/+]on Oct 21, 2022
Your CPU has 14 cores, but they are not all equal. 6 of them are much faster than the other 8, and the 6 support hyper threading. This is a situation that BenchExec currently does not support.
It is also questionable whether it makes sense to use such a CPU for benchmarking at all. If a run is allowed to be executed on both fast and slow cores, the performance will vary drastically depending on how the OS decides to schedule it and thus be likely non-deterministic and not reproducible. On the other hand, if CPU cores are split between runs and some runs are executed on the fast cores and others on the slow cores, the results will not be useful as well.
The only thing that I think would be ok is to use only either the fast cores or the slow cores for benchmarking, and keep the other cores unused. And I think that it should already be doable with BenchExec if you specify the cores manually (but I could not test it so far).
So first you have to find out which of the 20 core numbers that the Linux kernel assigns belong to the 6+6 fast cores (with hyper threading) and which to the 8 slow cores. Then you can decide on one of the two sets and pass it to benchexec with --allowedCores N,M-K.
If you can tell me how I can programmatically find out which cores are fast/slow (I guess that this is somehow reflected in the files below /sys/devices/system/cpu/), I could also add some logic to BenchExec that would provide a better error message with a hint for the user what to do.
@Anthonysdu You had posted an answer here, but GitHub no longer shows it. Did you delete it?
Could you please run zip --symlinks -r cpu-topology.zip /sys/devices/system/cpu and upload the resulting ZIP file here? This would help me to find out how BenchExec can handle this situation properly.
Activity
Anthonysdu commentedon Oct 20, 2022
Can I ask you give some advice how to solve it?
[-]Asymmetric machine architecture not supported: CPU cores with different number of sibling cores.[/-][+]"Asymmetric machine architecture not supported" on Intel CPU with hybrid architecture[/+]PhilippWendler commentedon Oct 21, 2022
Your CPU has 14 cores, but they are not all equal. 6 of them are much faster than the other 8, and the 6 support hyper threading. This is a situation that BenchExec currently does not support.
It is also questionable whether it makes sense to use such a CPU for benchmarking at all. If a run is allowed to be executed on both fast and slow cores, the performance will vary drastically depending on how the OS decides to schedule it and thus be likely non-deterministic and not reproducible. On the other hand, if CPU cores are split between runs and some runs are executed on the fast cores and others on the slow cores, the results will not be useful as well.
The only thing that I think would be ok is to use only either the fast cores or the slow cores for benchmarking, and keep the other cores unused. And I think that it should already be doable with BenchExec if you specify the cores manually (but I could not test it so far).
So first you have to find out which of the 20 core numbers that the Linux kernel assigns belong to the 6+6 fast cores (with hyper threading) and which to the 8 slow cores. Then you can decide on one of the two sets and pass it to
benchexecwith--allowedCores N,M-K.If you can tell me how I can programmatically find out which cores are fast/slow (I guess that this is somehow reflected in the files below
/sys/devices/system/cpu/), I could also add some logic to BenchExec that would provide a better error message with a hint for the user what to do.PhilippWendler commentedon Oct 26, 2022
@Anthonysdu You had posted an answer here, but GitHub no longer shows it. Did you delete it?
Could you please run
zip --symlinks -r cpu-topology.zip /sys/devices/system/cpuand upload the resulting ZIP file here? This would help me to find out how BenchExec can handle this situation properly.Anthonysdu commentedon Oct 26, 2022
cpu-topology.zip
Hi @PhilippWendler, Sorry I posted an unreadable format so I delete it. Please find the attached zip file.
I solved the issue by checking
lscpu -eand manually selected the cores which are symmetrically allocated.Thank you!
PhilippWendler commentedon Oct 26, 2022
I see. The info might be useful, so I am reposting your comment:
Thanks for the ZIP!