In legacy Fortran MPI programs, near the top of the procedure we would have:
It is typically recommended to use the OpenMPI Fortran 2008 interface:
Intel MPI supports MPI Fortran 2008
use mpi_f08 since Intel 16.0 EXCEPT for
Windows Intel MPI,
where even Intel 19.0 did not have
Interfacing MPI 3 with legacy Fortran code
You will notice for example that constants like
mpi_real are no longer
integer data type, but rather custom types.
Many legacy and even current libraries (such as MUMPS 5) have not yet updated to be polymorphic for this enhanced variable type.
Here is a minimal working example for MUMPS using the backwards compatible OpenMPI 3 interface, grabbing the integer via the
program mumps_mpi3 use mpi_f08 include 'dmumps_struc.h' ! per MUMPS 5 manual type(dmumps_struc) mumps_par mumps_par%comm = mpi_comm_world%mpi_val ! %mpi_var emits the legacy integer end program