Re: [MPIWG Fortran] Question about MPI_Status_f2f08() and _f082f()
Gah. Closer reading shows that MPI-3.1 page 658 actually has mpif.h/mpi module bindings for MPI_Status_f2f08 and _f082f that include TYPE(MPI_Status) dummy parameters. So the standard text actually strongly infers that TYPE(MPI_Status) is supposed to be defined in mpif.h and the mpi module. Granted, a user *could* do something like this, but I can't believe that this is what we intended users to do: ----- ! This is super ugly IMNSHO use :: mpi_f08, only : MPI_Status implicit none include 'mpif.h' ----- Do we really want to change the spec to state that the _f2f08 and _f082f subroutines are only available in the mpi_f08 module? I think that that would be a *change*, not a *clarification*. That being said, we might be able to squint at this and call it an "error" in MPI-3.1. But *that* being said, it's *not* actually a technical error. It's just that we seemed to have missed the implication back then that TYPE(MPI_Status) would need to be defined in mpif.h and the mpi module. That's not a technical *problem* -- it's just a little weird.
On Jul 10, 2020, at 8:49 AM, William Gropp <[email protected]> wrote:
That certainly was not my understanding - I expected that these would be defined only for F08, allowing code in F08 to move status data to/from the integer status array for the prior Fortran bindings. I am in favor of clarifying the standard to make this clear.
Bill
William Gropp Director and Chief Scientist, NCSA Thomas M. Siebel Chair in Computer Science University of Illinois Urbana-Champaign
On Jul 9, 2020, at 7:54 PM, Jeff Squyres (jsquyres) via mpiwg-fortran <[email protected]> wrote:
MPI-3.1 Figure 17.1 (in section 17.2.5, starting on page 656) defines the following routines:
1. MPI_Status_c2f() (from MPI-2) 2. MPI_Status_f2c() (from MPI-2) 3. MPI_Status_c2f08() (new in MPI-3) 4. MPI_Status_f082c() (new in MPI-3) 5. MPI_Status_f2f08() (new in MPI-3) 6. MPI_Status_f082f() (new in MPI-3)
All of the functions are fairly straightforward to implement in C.
But per the bottom part of Figure 17.1, two of the routines are supposed to be implemented in Fortran: #5 and #6.
Does this mean that TYPE(MPI_Status) needs to be defined in mpif.h and the mpi module?
I'm not sure how an MPI application would be able to invoke functions #5 and #6 without a definition of TYPE(MPI_Status) -- or even have a variable of that type that they need to convert to INTEGER(MPI_STATUS_SIZE).
-- Jeff Squyres [email protected]
_______________________________________________ mpiwg-fortran mailing list [email protected] https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran
-- Jeff Squyres [email protected]
participants (1)
-
Jeff Squyres (jsquyres)