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.

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)