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)