Skip to content

Commit

Permalink
SQUASH ME
Browse files Browse the repository at this point in the history
Add text about Fortran ABI issues.  Please squash this commit into the
larger docs commit about ABI issues.

Signed-off-by: Jeff Squyres <[email protected]>
  • Loading branch information
jsquyres committed Jul 23, 2023
1 parent 9219ebe commit f65b339
Showing 1 changed file with 37 additions and 2 deletions.
39 changes: 37 additions & 2 deletions docs/building-apps/abi-compatibility.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,43 @@ application compiled with Open MPI 4.1 can be executed with Open MPI
There are however a few scenarios where an application compiled with
Open MPI 4.1 might not execute correctly with Open MPI 5.0.

- There were some minor changes in the Fortran Interfaces (Jeff, need
your help what to say here).
- Fortran compilers provide varying degrees of ABI guarantees between
their releases. As such, Open MPI can only provide ABI guarantees
with MPI applications that use the Fortran MPI bindings when all
three entities |mdash| Open MPI v4.x, Open MPI |ompi_series|, and
the MPI application |mdash| were built with exactly the same Fortran
compiler and environment.

If these conditions are met, Open MPI's ABI guarantees between the
Open MPI v4.x and |ompi_series| series are in effect, with the
exception of the following cases:

* When using the Fortran ``mpi`` module bindings with GCC compiler
versions prior to v4.8, non-compliant Fortran interfaces for
``MPI_Comm_spawn_multiple``, ``MPI_Testall``, ``MPI_Testsome``,
``MPI_Waitall``, and ``MPI_Waitsome`` were removed starting with
Open MPI v5.0.0.

* When using the Fortran ``mpi`` module with modern Fortran
compilers (e.g., GNU Fortran >= v4.9), Open MPI v5.0.0 removed the
names from the MPI interfaces when there is only a single
subroutine in the interface, and that subroutine name exactly
matches the iterface name. This change is likely to make Open MPI
|ompi_series|'s ``mpi`` module bindings *less* restrictive than
Open MPI v4.x, but it *may* also have ABI implications, depending
on your Fortran compiler.

`See this git commit message
<https://github.com/open-mpi/ompi/commit/f34782fe0c493963ec44bcf7dde9d94b88a7ea91>`_
for more details.

.. important:: This is likely a compiler-specific issue, and may
need to be tested in your environment.

* When using the Fortran ``mpi_f08`` module bindings in an
environment where a Fortran ``INTEGER`` is 8 bytes but a C ``int``
is 4 bytes, the size of a ``Type(MPI_Status)`` was increased
starting with Open MPI v5.0.0.

- Open MPI 5.0 removed support for the C++ bindings. If an application
was using the deprecated and now removed C++ bindings, it will not
Expand Down

0 comments on commit f65b339

Please sign in to comment.