MPC is available under the CeCILL-C license, which is a French transposition of the LGPL and is fully LGPL-compatible.

Install from Sources

Please refer to the building instructions on how to install MPC.


There are two flavors of MPC as follows:

  • light: dependencies are not included and downloaded if needed (when using the ./installmpc script);
  • full: a version including all dependencies (for the default configuration) such version is recommended for offline systems.
  • MPC_4.2.0 (digest)

    Download links:


    • Compilation: new wrappers: mpicc++ and mpif90 supporting privatization
    • OpenMP:
      • Added fibers to OpenMP tasks
      • Fix OMP Tool support
      • Added interoperation between MPI/OpenMP
      • Refactored OpenMP task runtime (memory management, dependencies, tasks priorities)
    • MPI
      • adding message queue
      • new pairwise alltoall algorithm
      • Session: new support
    • CONFIG: add intracomm collective communications config switch
    • UPGRADE upgrade to autopriv@0.8.0 then to autopriv@0.9.1
    • PMIX: detection and execution improvements
    • Many fixed bugs in communication layers & privatization

    MPC_4.1.0 (digest)

    Download links:

    Changelog :

    • Active Message engine based on libffi
    • PRRTE implement support for the PMIx standard runtime
    • Add libfabric support (OFI)
    • Add new configuration system inside MPC (only at runtime)
    • Autopriv dependency has been renamed to mpc-compiler-additions
    • Add OMP 5.0 memory management support (includes HWLOC 2+ support)
    • Move to HWLOC 2+
    • MPIT rewrite mirroring the new configuration system
    • Full communicator / Group system rewrite
    • MPI 4.0 Split topology support
    • Collective factorization and rewrite
    • Bugfix on persistent collectives
    • Expose MPC’s modularity in PKGCONFIG / CMAKE
    • Improved DNS resolution for TCP
    • Topological collectives support
    • Move to mpc-compiler-additions 0.7.0 with GCC 10.2.0
    • Workshare support
    • OMPT improvements
    • General bugfixes and documentation

    MPC_4.0.0 (Beta) (digest)

    Starting from this version MPC comes in two flavors:

    • light: dependencies are not included and downloaded if needed (when using the ./installmpc script);
    • full: a version including all dependencies (for the default configuration) such version is recommended for offline systems.

    Download links:

    This is a BETA release. This release breaks retro-compatibility.

    • MPC is now modular and comes in several components:
      • lowcomm : component handling and providing the networks interfaces
      • threads : component handling and providing the user-level thread scheduler
      • mpi : component handling and providing the MPI standard API
      • mpiio : component handling and providing the IO part of the MPI standard API
      • openmp : component handling and providing the OpenMP standard API
      • fortran : component handling and providing the Fortran interface for the above parallel programming APIs
      • … and other internal components
    • New features:
      • PMIX: PMIX is now supported through --with-pmix
      • PRIV: Support for new GCCs (using now external autopriv) up to 10.2.0 (using --gcc-version=X.X.X)
      • STATUS: the mpc_status command can be used to print current MPC configuration
      • BUILD: once installed with ./installmpc MPC can be reconfigured with ./reconfigure in the build directory. MPC is now longer in an mpcframework subdirectory
    • Changed features:
      • BUILD: Installation process compatible with Spack to manage package dependencies
      • BUILD: MPC now relies on autotools as its build system
      • BUILD: It is possible to directly call ./configure to use MPC in a modular way
      • DEPS: dependencies can be downloaded on demand, a light version is a version not providing the dependencies. ./installmpc --download-missing-deps can be used to retrieve the dependencies for a given configuration. Conversely a full version includes all dependencies for the default configuration
      • COMM: communicator management was fully rewritten. The MPI_Comm is now a pointer (instead of an integer)
      • MPCRUN: mpcrun has been fully rewritten
      • MPIIO: MPI-IO support (ROMIO) is now integrated in MPC
      • FORTRAN: the Fortran interface is now external and optional (MPC_Fortran)
    • Deprecated features:
      • mpcrun: several options from mpcrun were deprecated they should now be no-op
      • installmpc: several options from ./installmpc were deprecated they should now be no-op
    • Removed features:
      • mpc_compiler_manager: the mpc_compiler_manager command is no longer provided. MPC is now compiled against a single compiler
      • mpc_icc and compiler-specific wrappers: MPC now provides only mpc_{cc,cxx,f77} and mpi{cc,cxx,f77} wrappers
      • PRIV: all privatization has been externalized in autopriv, including, compilers, plugins, TLS library and privatized getopt
    • Fixed features:
      • COMM: Default communicator attributes were fixed (APP_NUM, MPI_IO, MPI_HOST)
      • COLL: fixed several collectives
      • COMM: Major fixes in communicator management (free, creation and reuse)
      • MISC: less contention on large SMP (various optimizations)
      • MISC: various fixes in the lowcomm and MPI layers

    MPC_3.4.0 (digest)

    • MPI:
      • Optimizations and corrections of nonblocking collectives
      • Bugfix on virtual topologies (MPI_Cart_*)
    • OpenMP:
      • Improved OMPT support
      • Bugfix on tasks with dependencies
    • Network/communication layers
      • Support of MPI Hardware-enabled operations through Portals4 driver
    • Privatization / compilers
      • MPC default privatizing compiler is now GCC 7.3.0
    • Active Message
      • Integration of custom Active Messages relying on gRPC approach
    • Misc.
      • Addition of file
      • New doc structure through Markdown
      • Many other small optimizations and bug fixes

    MPC in a Virtual Machine

    MPC is available, preinstalled in a virtual machine with both GNU and Intel compilers. Please download the OVA file from

    Older Releases

    MPC_3.3.1 (digest)

    • Optimizations:
      • Message latency
      • Message progress with copy engine
    • Bugfixes:
      • MPI wrappers (mpirun)
      • NBCs, Collectives, Communicators
    • General source-code cleanup

    MPC_3.3.0 (digest)

    • MPI standard :
      • C/R support (Shmem, TCP & IB handlings) 
      • Collective algorithms optimizations 
      • NBC communication progress improvements
      • Shared-memory shortcut set qfor intra-node comms
    • OpenMP standard:
      • Support for OMP_PLACES 
      • Tasking bug fixes 
      • OMPT Stabilization
    • Communication layer :
      • Full rewrite for the Portals 4 driver (only process-mode)
    • Privatization:
      • GCC 7.2.0 compatibility (not set as default)
    • Miscs:
      • Spack recipes for MPC, and patched GCC 
      • Fix for older Autotools 
      • Process-mode performance optimizations 
      • mpc_compiler_manger optimizations and Fortran bug fixes 
      • Improve installmpc procedure when GCC is not required 
      • Docker recipes for CentOS/Debian 
      • New mpcrun options related to placement debugging 
      • Various bug fixes 
      • Documentation

    MPC_3.2.0 (http mirror) (digest)

    • This is a development release
    • MPI standard:
      • Support for MPI RMA (3.1) 
      • MPI-T Support 
      • Fortran 2008 modules 
    • OpenMP standard:
      • Support for the GOMP ABI 
      • Support for OMP tasks with dependencies 
      • OMPT Support 
      • Several bug-fixes 
    • Privatization:
      • Support for privatized CUDA contexts and privatization of Cuda programs using a dedicated compiler wrappers (mpc_nvcc) 
      • Fix support for optimized TLS with icc 
      • Update to GCC 6.2 of the privatizing compiler 
      • Initial support for ARM 
      • Several bug-fixes 
    • MPI Bugfixes/Optimizations:
      • Shared-memory optimization of collectives 
      • Stabilization of the NBCs 
      • Several bug-fixes 
    • Miscs:
      • Add a process mode for the installation (–mpc-process-mode) 
      • On the fly Fortran module generation 
      • Enhance compiler manager and install management 
      • Add an “mpc_cleaner” command 
      • For now TBB has been disabled by default

    MPC 3.1.0 (http mirror) (digest)

    • Rewrite of the TLS/HLS support:
      • Support for all linker level optimizations
      • Definition of new C and C++ keywords
      • Outlining of the exTLS library separating TLS from MPC
    • C privatization plugin in GCC:
      • Full support for global variable privatization in C
      • Support for dynamic intializers in C to handle some TLS edge cases
    • Major bugfixing in OpenMP interface
    • New compiler selector (from command line)

    MPC 3.0.0 (http mirror) (digest)

    • Major MPI Features:
      • Integration of ROMIO and MPI-IO
      • Integration of Non-Blocking Collectives (NBC) (excluding IO)
      • Add Fortran90 support (.mod)
    • MPI Improvements:
      • Support for heterogeneous data-types in collectives
      • Collectives on inter-communicators and IN_PLACE related fixes
      • Various improvements on data-types and collectives
      • All collective algorithms were simplified to be completely rewritten state of the art (soon)
      • Request management in the MPI interface was optimized
      • Fixes on MPI topologies
      • Various Bugfixes
    • OpenMP:
      • Fixes in the Intel OpenMP interface
      • Corrections on topology support
    • Communication layer:
      • Generic Multi-rail support with gates (from XML configuration file)
      • Support for Portals 4
      • Support for SHM
      • Addition of a generic device detection engine with distance matrix (HWLOC-based)
      • Improved topological polling in Infiniband (from device detection)
      • Outline of a « low-level » communication interface (cont. p2p messages and RDMA)
      • Add low-level RDMA (for IB and Portals) and implement emulated calls
    • Runtime:
      • Support for a privatized version of Getopt
      • Internal implementation of asynchronous IO for old libc (AIO threads are launched with small stacks)
      • Add support for a library mode for embedding inside another MPI runtime

    MPC 2.5.2 (http mirror) (digest)

    • Extended data-type support (up to MPI 3.0)
    • Optimized data-types (flattening and reuse)
    • Add support for Intel(r) OpenMP ABI (run OpenMP applications compiled with ICC)
    • Extended Generic Request and extended generic request class support
    • External32 data-representation support
    • MPI_Info support
    • Several fixes to the Fortran interface
    • Various bugfixes

    MPC 2.5.1 (http mirror) (digest)

    • Development release
    • New build system
    • Xeon-Phi Support
    • Cross compilation support
    • OpenMP optimizations
    • Various Bugfixes

    MPC 2.5.0 (http mirror) (digest)

    • Stable release
    • New OpenMP runtime (NUMA optimizations)
    • Patched GCC 4.8.0 with privatization of global objects
    • Many bug fixes
    • Performance optimizations

    MPC 2.4.1(http mirror) (digest)

    • Stable release
    • Bug fixes
    • New memory allocator
    • Performance optimizations

    MPC 2.4.0  (http mirror) (digest)

    • Stable release
    • Bug fixes
    • Collaborative polling
    • Performance optimizations
    • Enhancement of automatic privatization

    MPC 2.3.1  (http mirror) (digest)

    • Stable release
    • Bug fixes in HLS support

    MPC 2.3.0(http mirror) (digest)

    • Stable release
    • HLS support
    • Scalable and flexible launcher based on HYDRA
    • Bug fixes with OpenMP programming model
    • Bug fixes with MPI programming model
    • Bug fixes in the installation process

    MPC 2.2.0(http mirror) (digest)

    • Stable release
    • New InfiniBand support
    • Extended TLS support
    • Bug fixes with OpenMP programming model
    • Bug fixes with MPI programming model
    • Bug fixes in the installation process

    MPC 2.1.0(http mirror) (digest)

    • Stable release
    • SHM module (shared memory communications between processes)
    • Bug fixes with OpenMP programming model
    • Bug fixes with MPI programming model
    • Bug fixes in the installation process

    MPC 2.1_rc2(http mirror) (digest)

    • Development release
    • Bug fixes in the installation process

    MPC 2.1_rc1(http mirror) (digest)

    • Development release
    • SHM module (shared memory communications between processes)
    • Bug fixes with OpenMP programming model
    • Bug fixes with MPI programming model

    MPC 1.1(http mirror) (digest)

    • Stable release
    • Debugger support with a patched version of GDB

    MPC 1.1 rc9(http mirror) (digest)

    • Small bugs correction

    MPC 1.1 rc8(http mirror) (digest)

    • MPI_Cancel support

    MPC 1.1 rc7(http mirror) (digest)

    • Full Infiniband support
    • Small bugs correction

    MPC 1.1 rc5(http mirror) (digest)

    • MPI-compliant API (version 1.3)