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.
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).
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
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.