Description
The MPC runtime is a unified runtime targeting the MPI, OpenMP and PThread standards. One of its main specificity is the ability to run MPI Processes inside threads, being a thread-based MPI.
MPC Supports the MPI 3.1 standard in both thread-based and process-based flavors and was optimized for the Infiniband and Portals 4 networks. In MPC, MPI_THREAD_MULTIPLE is always on enabling the transparent use of shared-memory parallelism with MPI.
MPC comes with a suite of privatizing compilers which enable the transparent port of existing codes to the thread-based execution paradigm. To do so, MPC extended the support of TLS which are now hierarchical.
Running inside threads enables lower latencies inside nodes (as messages are direct memcpys). It requires fewer communication endpoints, one per node instead of one per core, leading to memory and launch time improvements.
Links
MPC is an open-source project and sources are available on GitHub: