[MPIWG Fortran] Question about MPI_Status_f2f08() and _f082f()

Jeff Squyres (jsquyres) jsquyres at cisco.com
Fri Jul 10 08:39:54 CDT 2020


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 <wgropp at illinois.edu> 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 <mpiwg-fortran at lists.mpi-forum.org> 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
>> jsquyres at cisco.com
>> 
>> _______________________________________________
>> mpiwg-fortran mailing list
>> mpiwg-fortran at lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran
> 


-- 
Jeff Squyres
jsquyres at cisco.com



More information about the mpiwg-fortran mailing list