ABI Compatibility Initiative
Goals of the ABI Compatibility Initiative
The ABI compatibility initiative is an understanding between various MPICH derived MPI implementations to maintain runtime compatibility between each other. That is, an application can be compiled with one of them and executed with another. The following partners are currently involved in the ABI compatibility initiative:
- MPICH (starting mpich-3.1)
- Intel MPI (starting Intel MPI 5.0)
- Cray MPI (start T.B.D.)
- IBM PE MPI (start T.B.D.)
ABI Compliance Requirements
In order to maintain ABI compliance, the members of the initiative have agreed on the following requirements:
- All releases by the above MPI implementations will use the libtool ABI string "12:x:0". "x" can vary based on release number.
- The following names will be used for the libraries:
- C bindings and internal symbols: libmpi
- C++ bindings: libmpicxx
- Fortran 77 bindings: libmpif77
- Fortran 90 bindings: libmpifort
- Functions that are not a part of the MPI standard (MPIX_ functions) and F08 bindings are not covered by the ABI.
- All wrapper compilers will use the following dependencies; no additional library dependencies will be explicitly added (they will be pulled in using libtool interlibrary dependencies):
- For C programs: libmpi
- For C++ programs: libmpicxx and libmpi
- For Fortran 77: libmpif77
- For Fortran 90: libmpifort and libmpif77
When the ABI string current version or age is being updated, this will be done in coordination with the remaining initiative members. The next likely change point will be either when MPI-3.1 is released or when we decide to include F08 bindings in the ABI string. We might merge both of these into a single ABI string change. At that point, assuming no ABI breakage, we would move to the ABI string "13:0:1".
ABI Compatibility Testing Requirements
ABI compatibility testing is currently done with the MPICH test suite.