[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