MPC 4.0.0 Release Note

The MPC 4.0.0 release of MPC has undergone a massive refactor in order to improve its modularity. It also brings several new features and changed how privatization support is handled (now externally in the mpc-compiler-additions project). First, it is important to note that this release is breaking retro-compatibility. Moreover, due to the major changes in this release, it is still flagged as BETA, next release 4.0.1 should remove this attribute.

Usage Examples

You may dowload MPC 4.0.0 from here.

# Full install
../installmpc --prefix=$HOME/mpc_4.0.0

# MPC Lowcomm Only
../configure --disable-mpi --prefix=$HOME/mpc_4.0.0

# MPC OpenMP Only
../configure --disable-lowcomm --prefix=$HOME/mpc_4.0.0

# Full install (lowcomm only)
../installmpc --prefix=$HOME/mpc_4.0.0 --mpc-option="--disable-mpi"


This means that MPC can now be installed component by component, instead of as a full bundle as before. In this process the following components were outlined:

  • 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

Such aforementioned components can be enabled and disabled using --enable/disable-XX as mpc-option in the installation script, or through variants in the new Spack building recipe.
Note that some components are dependent and cannot be installed if the dependencies are disabled (e.g., mpiio depends on mpi, and cannot be installed if mpi is disabled).

Main Changes

MPC now includes PMIX support when MPC is compiled using --with-pmix, note that hydra is still the default and that PMI1 can also be targetted using --with-slurm.

The whole privatization support has been externalized in a dedicated project mpc-compiler-addition. This simplifies how MPC handles this support which is required for thread-based MPI. Due to this change the mpc_compiler_manager command has been removed.

Communicator support has been fully rewritten, and the communicator handle is now a pointer in the C MPI interface.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *