I have a question regarding the organization of Fortran MPI modules.
According to the MPI standard (3.1), the following holds:
Within the mpi_f08 and mpi modules and mpif.h, for all MPI procedures, a second procedure with the same calling conventions shall be supplied, except that the name is modified by prefixing with the letter “P”, e.g., PMPI_Isend. The specific procedure names for these PMPI_Xxxx procedures must be different from the specific procedure names for the MPI_Xxxx procedures and are not specified by this standard.
However, this does not seem to be the case. The test code
program foo use mpi, only : PMPI_INIT end program foo
fails using mpiifort with the message that pmpi_init is not found in the given module, although according to the MPI standard, it should be available. Instead, if I use the module pmpi_f08, it works.
Is there a reason for this inconsistency?
Thanks for reporting the issue.
We have tested and found some inconsistencies with the standard.
But with use mpi_f08 we didn't get any errors.
Which version of IMPI were you using?
If you were using an old version could you please update to the latest version(2019u7) and check with usempi_f08.
I am using version 2019 (Build 20180829) of Intel MPI.
I can confirm that it also works if I use the module mpi_f08 instead of pmpi_f08. I guess I can switch to that module to assure compatibility with other compilers.
Still, I am curious for the reason why the PMPI symbols are not included in the mpi module.