Fortran support for the ABI is more complicated than C, because the sizes of INTEGER, REAL, and DOUBLE PRECISION can be changed with compiler options; there is no ABI constancy even with a single Fortran compiler and platform. This flexibility creates a difficult situation for the MPI C ABI because the functions defined in Section Transfer of Handles and Section Status in the MPI C API depend on the size of INTEGER via MPI_Fint. As a result, the functions defined in Section Transfer of Handles and Section Status as well as MPI_F08_Status are not part of this ABI. Instead, to support Fortran and other use cases where obtaining an integer associated with an MPI handle is necessary, new functions are added that do not depend on MPI_Fint.
MPI applications can discover the size of Fortran types such as
MPI_INTEGER and MPI_REAL using MPI_TYPE_SIZE.
Lack of support in the implementation for optional predefined datatypes
is indicated when the type size returned is
MPI_UNDEFINED.
Rationale.
Prior to the ABI, optional predefined datatypes were not present in the MPI header and modules.
When absent, usage would generate compilation errors.
The standard ABI must define a value for all predefined datatypes, including the optional ones.
Therefore, the absence of optional datatypes must be detected at runtime.
( End of rationale.)