mpixlate
mpixlate - Application Binary Interface (ABI) translator for MPI programs
SYNOPSIS
mpixlate { -ssrc-ABI -ttgt-ABI | -lxlat-lib | -V | -h }
DESCRIPTION
Several shared library implementations of the Message Passing Interface (MPI) specification are available for building MPI applications. Even when they implement the same MPI specification, some MPI shared libraries are not binary compatible with others due to differences in implementation choices. As a consequence, applications built with a specific MPI shared library can be run only on systems which have an MPI shared library that is binary compatible with the one used to build the application. On systems where such a binary compatible MPI library is not available, the application must be recompiled using the native MPI shared library.
MPIxlate enables applications compiled using an MPI library that is not binary compatible with HPE Cray MPI, to be run without recompilation on supported HPE Cray systems.
MPIxlate does transparent runtime translation of the Application Binary Interface (ABI) between supported combinations of source and target MPI shared library implementations. The MPI shared library used to compile the application determines the source ABI and the HPE Cray MPI shared library using which it will be run determines the target ABI.
OPERATION
MPIxlate identifies source and target ABI’s using the naming pattern <MPI-implementation-name>.<version>. In this naming scheme, ompi.40 identifies all Open MPI implementations that have an ABI major version number 40. Similarly, cmpich.12 identifies all HPE Cray MPI shared libraries having ABI major version number 12. Some MPI shared library implementations do not have a unique ABI major version number (other than zero). For such libraries, the product version number will be used. For example, sgi.225 identifies the HPE SGI MPI shared library shipped with product version 2.25.
The ABI major version for both source and target ABI can be obtained using the readelf(1) utility.
Source ABI
Examine NEEDED field listing MPI library in the output of ‘readelf –wide –dynamic <path/to/application>’
Target ABI
Examine SONAME field in the output of ‘readelf –wide –dynamic <path/to/HPE-Cray-MPI-library>’
Supported combinations of source & target ABI’s are:
TABLE
To use MPIxlate:
load all modules required to run the application, except the MPI module
load Cray MPI module corresponding to target ABI
load MPIxlate module
launch application using MPIxlate as a pass-through intermediary
<MPI-launcher> <MPIxlate-cmd-line> <application-cmd-line>
Example:
srun –ntasks=8 mpixlate -s ompi.40 -t cmpich.12 a.out arg1 arg2
OPTIONS
- -ssrc-ABI
Source ABI identifier
- -ttgt-ABI
Target ABI identifier
- -lxlat-lib
Translation library
- -V
Print version and build information
- -h
Print brief help text
ENVIRONMENT
MPI environment variables documented under the ENVIRONMENT section in HPE Cray MPI intro_mpi(3) manual page are available to MPIxlate.
MPI environment variables that are not used by HPE Cray MPI are not supported at this time.
MPIXLATE_VERBOSE
Setting the MPIXLATE_VERBOSE environment variable will produce a message at two instances in the lifetime of the application:
when MPIxlate is activated for ABI translation and
when the MPI application has completed through the MPI_Finalize() function.
Note however that if the application re-directs stderr, these messages may not appear on the terminal.
NOTES
Untranslated MPI functions
MPIxlate does not yet translate every MPI function.
If an application calls an untranslated MPI function, MPIxlate will report the function name and abort the application. A request should be made to HPE Customer Support to add the missing function in a future release of MPIxlate.
Deprecated and Removed language bindings
MPIxlate does not support MPI C++ bindings which have been deprecated and removed from the MPI specification.
Unsupported language bindings
This version of MPIxlate does not support ABI translation for MPI applications and libraries written in Fortran.
Unsupported application compilation & linking options
MPIxlate does not support ABI translation for MPI applications
built with a statically linked MPI library or
dynamically linked to an MPI library using the -rpath linker (ld(1)) option.
SEE ALSO
User Guides
Cray Programming Environment User’s Guide
White Papers
MPICH ABI Compatibility Status for Shasta white paper
Manual pages
intro_mpi(3)