Intel® oneAPI HPC Toolkit
Get help with building, analyzing, optimizing, and scaling high-performance computing (HPC) applications.
1959 Discussions

Which logical core does MPI background threads are pinned?

seongyun_k_
Beginner
269 Views

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
TimP
Black Belt
269 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.
Dmitry_S_Intel
Moderator
269 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

Reply