Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
40 Views

Which logical core does MPI background threads are pinned?

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?

Thanks

0 Kudos
2 Replies
Highlighted
Black Belt
40 Views

I doubt there's an answer which holds for all mpi. Normally it's sufficient to pin your openmp threads 1 per core. In the special case of Mic knc you would likely want to leave core 0 open for mpss and mpi data moves.
0 Kudos
Highlighted
Employee
40 Views

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)
https://software.intel.com/en-us/node/561772

- I_MPI_MT_MEMCPY=enable (MPI rank thread mask is used)
https://software.intel.com/en-us/node/528848

But additional helper threads may be created by lower level libraries (libfabric, PSM, etc)

--

Dmitry

0 Kudos