Hybrid applications: Intel MPI Library and OpenMP*

By Gergana S. Slavova, Published: 05/21/2009, Last Updated: 05/29/2019

I have a mixed application which uses both MPI and OpenMP* calls. Does the Intel® MPI Library support this type of hybrid functionality?

Yes, Intel MPI does support mixed MPI/OpenMP applications. Intel MPI is thread-safe as of version 2019, and defaults to the thread-safe library in the 2018 version.

Ensure that you are setting pinning optimally for your program.  In general for OpenMP, it is recommended to set

I_MPI_PIN_DOMAIN=omp

This will pin ranks to domains sized by OMP_NUM_THREADS.  All threads within a rank will be pinned within the domain based on KMP_AFFINITY settings.  More details on pinning are available in the Intel® MPI Library Interoperability with OpenMP section.

Intel MPI 2019 implements a new feature known as Multi-EndPoint (MEP).  MEP enables more efficient utilization of MPI calls from multiple threads.  Please read through Multiple Endpoints Support for additional details including how to use MEP.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804