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"
Modularity
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 interfacesthreads
: component handling and providing the user-level thread schedulermpi
: component handling and providing the MPI standard APImpiio
: component handling and providing the IO part of the MPI standard APIopenmp
: component handling and providing the OpenMP standard APIfortran
: 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.