Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std::thread::hardware_concurrency() should not be used #196

Open
jbd opened this issue Aug 23, 2022 · 0 comments
Open

std::thread::hardware_concurrency() should not be used #196

jbd opened this issue Aug 23, 2022 · 0 comments

Comments

@jbd
Copy link

jbd commented Aug 23, 2022

Hello,

std::thread::hardware_concurrency() returns, when possible, the underlying hardware capability to run threads, which might not corresponds to the actual number of cores available to the process (through the use of taskset, batch system like slurm, etc...). The consequence is that kmc might run in a non optimal way. For example, I've got a user that has submitted a kmc job on a 96 cores HPC nodes, in a single core slurm allocation: more than 100 threads are now fighting for the usage of this core.

The immediate workaround is to use the -t option to set the number of threads, but I think a more sane behavior would be to use sched_getaffinity as in opencv/opencv#16268. Gromacs did something similar (https://github.com/gromacs/gromacs/blob/1e6873fadf16d5f5be861e6f9ef5f9923a12e540/src/gromacs/hardware/hardwaretopology.cpp#L1221).

What do you think ?

Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant