|
Article ID: 619
Last updated: 23 Dec, 2020
HPC-X Message Passing Interface (MPI) is an implementation of Open MPI (based on version 4.x) that includes features and optimizations from Mellanox, the vendor of the InfiniBand networking hardware used in HECC systems. HPC-X MPI offers improved performance for some MPI routines, however, the main purpose we are supporting this implementation is to provide you with an alternative to using the HPE Message Passing Toolkit (MPT). Some MPI constructs that had been removed from the MPI 3.0 standard—but had remained available for use in deprecated status—were formally removed from OpenMPI-4.x. Our HPC-X MPI installation was built with a flag that makes these deprecated features visible again. For a list of these features, see Removed MPI Constructs on the Open MPI website. Recommendation: Keep your MPI applications up to date with the current MPI standard. To use HPC-X MPI on HECC systems, simply load the HPC-X module and your preferred Intel compiler suite, then recompile your application and its dependencies. Launch the newly built application as usual using the mpiexec launcher. You can safely use the HPC-X build with any of the Intel compiler versions listed using command module avail comp-intel. The following example uses a specific Intel compiler:
The default process placement strategy is to place ranks round-robin by socket. This approach balances the computational load on the available hardware, but it might not be appropriate for all applications. You can force placement of ranks in linear core order by using the mpiexec --map-by option. For example:
where XX is the total number of ranks, YY is the user-specified number of ranks per socket, and the bind-to option is used to pin the ranks to specific cores. Some workflow changes will be required if you manipulate $PBS_NODEFILE in order to launch multiple MPI jobs within a single PBS job. In this case, do the following:
This sample rankfile runs 16 ranks (0-15) evenly distributed on four sockets on two Ivy Bridge nodes (r469i0n10 and r469i0n11):
|