Licence
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.
Download
There are two flavors of MPC as follows:
./installmpc
script);MPC_4.2.0 (digest)
Download links:
- light: mpcframework-4.2.0-light.tar.gz 2.8 MB (digest)
- Full: mpcframework-4.2.0.tar.gz 235 MB (digest)
Changelog:
- 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:
- light: mpcframework-4.1.0-light.tar.gz 2.7 MB (mirror, digest)
- Full: mpcframework-4.1.0.tar.gz 212 MB (mirror, digest)
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:
- light: mpcframework-4.0.0-light.tar.gz 8.1 MB (mirror, digest)
- Full: mpcframework-4.0.0.tar.gz 196 MB (mirror, digest)
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 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
- 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 anmpcframework
subdirectory
- PMIX: PMIX is now supported through
- 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 afull
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
- mpcrun: several options from
- 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}
andmpi{cc,cxx,f77}
wrappers - PRIV: all privatization has been externalized in autopriv, including, compilers, plugins, TLS library and privatized getopt
- mpc_compiler_manager: the
- 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 changelog.md 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 http://www.hpclinux.org.
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
- MPI_THREAD_MULTIPLE 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)