I program in C++ which parallelizes using both MPI and OpenMP (1 MPI process per machine, Multiple threads are exploited by each MPI process)
I carefully pin the worker threads of OpenMP and others in my application. I know that MPI spawns some background threads for its internal uses. But I don't know to which logical cores the threads are attached.
How can I find and control it?
For Intel(R) MPI Library is uses helper threads in cases of
- I_MPI_ASYNC_PROGRESS=enable (pinning controls for helper threads are I_MPI_ASYNC_PROGRESS_PIN)
- I_MPI_MT_MEMCPY=enable (MPI rank thread mask is used)
But additional helper threads may be created by lower level libraries (libfabric, PSM, etc)