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

William Gropp wgropp at illinois.edu
Fri Jul 10 08:46:10 CDT 2020


Granted, an error, not a clarification.  Does any implementation do this now (define Type_status in mpif.h/mpi module)? If not, it is easier to consider this an error.

Bill

William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign






> On Jul 10, 2020, at 8:39 AM, Jeff Squyres (jsquyres) <jsquyres at cisco.com> wrote:
> 
> 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
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpiwg-fortran/attachments/20200710/26ab9db2/attachment.html>


More information about the mpiwg-fortran mailing list