The traditional MPI/OpenMP* threading model has certain performance issues. Thread safe access to some MPI objects, such as requests or communicators, requires an internal synchronization between threads; the performance of the typical hybrid application, which uses MPI calls from several threads per rank, is often lower than expected.
The PSM2 Multiple Endpoints (Multi-EP) support in the Intel® MPI Library makes it possible to eliminate most of the cross-thread synchronization points in the MPI workflow, at the cost of some limitations on what is allowed by the standard MPI_THREAD_MULTIPLE thread support level. The Multi-EP support, implemented with MPI_THREAD_SPLIT (thread-split) programming model, implies several requirements to the application program code to meet, and introduces a few runtime switches. These requirements, limitations, and usage rules are discussed in the sections below.