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

Jeff Squyres (jsquyres) jsquyres at cisco.com
Mon Jul 20 14:02:24 CDT 2020


Fortran WG:

Ok, we have all the updates now.  Can you please review the LaTeX and the rendered PDF?

MPI-4.0 PR is here: https://github.com/mpi-forum/mpi-standard/pull/255

Rendered PDF from that PR is here: https://artprodcus3.artifacts.visualstudio.com/A2828b64d-12fe-4a97-80aa-ee05571c42af/e4892c7b-d2a0-47ff-8ddf-bb703647cdc2/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL21waWZvcnVtYm90L3Byb2plY3RJZC9lNDg5MmM3Yi1kMmEwLTQ3ZmYtOGRkZi1iYjcwMzY0N2NkYzIvYnVpbGRJZC8yOTQvYXJ0aWZhY3ROYW1lL0J1aWx0K1BERg2/content?format=zip

In particular, look at:

- page 755: lines 15 and 16
- page 756: new Fortran bindings for both functions
- page 907: lines 15 and 19



> On Jul 16, 2020, at 3:35 PM, Jeff Squyres (jsquyres) via mpiwg-fortran <mpiwg-fortran at lists.mpi-forum.org> wrote:
> 
> I just filed the issue:
> 
>     https://github.com/mpi-forum/mpi-issues/issues/298
> 
> And a first cut of the MPI-4.x PR:
> 
>     https://github.com/mpi-forum/mpi-standard/pull/255
> 
> I just added a statement in the text on the PR so far.  I need to work with Martin R to get the Pythonization changes.
> 
> I'll post back here when we have something for everyone to review.
> 
> After that, we'll make a corresponding equivalent-looking PR for MPI-3.x.
> 
> 
> 
> 
>> On Jul 16, 2020, at 12:07 PM, Rolf Rabenseifner <rabenseifner at hlrs.de> wrote:
>> 
>> Good idea.
>> 
>> With the pythonizing, we have the additional header
>>  Fortran binding
>> which could be substituted by
>>  Fortran binding (the following procedure is not available with mpif.h)
>> 
>> And in A.4.12 we could write in front of the two routines also
>> 
>>  The following procedure is not available with mpif.h:
>> 
>> I would not use the positive statement "only available in the mpi module",
>> because the procedure itself is in mpi_f08 and mpi, and only this
>> specific Interface only in the mpi module.
>> 
>> I would use "with mpif.h" and not use "in mpif.h", because most/all
>> MPI libraries do not provide procedure interfaces in mpif.h. 
>> 
>> Best regards
>> Rolf
>> 
>> ----- Original Message -----
>>> From: "wgropp" <wgropp at illinois.edu>
>>> To: "MPI-WG Fortran working group" <mpiwg-fortran at lists.mpi-forum.org>
>>> Cc: "Rolf Rabenseifner" <rabenseifner at hlrs.de>, "Jeff Squyres" <jsquyres at cisco.com>
>>> Sent: Thursday, July 16, 2020 5:17:55 PM
>>> Subject: Re: [MPIWG Fortran] Question about MPI_Status_f2f08() and _f082f()
>> 
>>> Adding something to the MPI_Status_f2f08/f082f bindings to specify these are
>>> only for the MPI module is a good idea.
>>> 
>>> Bill
>>> 
>>> William Gropp
>>> Director and Chief Scientist, NCSA
>>> Thomas M. Siebel Chair in Computer Science
>>> University of Illinois Urbana-Champaign
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> On Jul 16, 2020, at 9:19 AM, Jeff Squyres (jsquyres) via mpiwg-fortran
>>>> <mpiwg-fortran at lists.mpi-forum.org> wrote:
>>>> 
>>>> Thanks Rolf, Hubert, and Bill.  It all makes sense.
>>>> 
>>>> Rolf has proposed that we add the following at the end of the sentence on
>>>> MPI-3.1 p657 line 11:
>>>> 
>>>>   (only in the mpi_f08 and mpi modules)
>>>> 
>>>> This sounds reasonable to me, but do we need some additional annotation in the
>>>> MPI_Status_f2f08 and _f082f bindings to indicate that the all-caps Fortran
>>>> binding is only for the mpi module, and not mpif.h?
>>>> 
>>>> 
>>>> 
>>>>> On Jul 15, 2020, at 3:08 PM, Rolf Rabenseifner via mpiwg-fortran
>>>>> <mpiwg-fortran at lists.mpi-forum.org> wrote:
>>>>> 
>>>>> Dear Hubert and Jeff,
>>>>> 
>>>>>> Ø I'm a little curious as to why we conspicuously left it out of mpif.h.
>>>>> 
>>>>> I expect, we didn't want that mpif.h must include the overloading
>>>>> of the operators .NE. and .EQ. for all TYPE(MPI_....).
>>>>> I'm not sure whether such declaration is allowed outside of a module.
>>>>> 
>>>>> The use of mpif.h was already deprecated, i.e., if somebody
>>>>> wants to use mpi_f08 stuff in old code, he or she must
>>>>> first substitute the include mpif.h by use mpi.
>>>>> 
>>>>>> ... But it was never intended that the programmer
>>>>>> does this transformation within the old Fortran subroutine (and old Fortran 77
>>>>>> compiler or using Fortran 77 language kind wouldn’t support Type(MPI_Status) in
>>>>>> mpif.h).
>>>>> 
>>>>> It was intended that you can convert from old INTEGER variable or array
>>>>> to new TYPE(MPI_...) within source code using the mpi module
>>>>> or using the mpi_f08 module.
>>>>> 
>>>>> But we excluded mpif.h because it need not to provide compile-time
>>>>> argument checking and it use is therefore "strongly discouraged".
>>>>> Why should we add something to this "strongly discouraged" mpif.h
>>>>> area.
>>>>> 
>>>>> And, to add it in a later version of MPI is simple. To remove it later
>>>>> is not backward compatible. This may be another reason for not
>>>>> adding it to mpif.h
>>>>> 
>>>>> Best regards
>>>>> Rolf
>>>>> 
>>>>> ----- Original Message -----
>>>>>> From: "MPI-WG Fortran working group" <mpiwg-fortran at lists.mpi-forum.org>
>>>>>> To: "MPI-WG Fortran working group" <mpiwg-fortran at lists.mpi-forum.org>
>>>>>> Cc: "Hubert Ritzdorf" <Hubert.Ritzdorf at EMEA.NEC.COM>
>>>>>> Sent: Wednesday, July 15, 2020 6:15:58 PM
>>>>>> Subject: Re: [MPIWG Fortran] Question about MPI_Status_f2f08() and _f082f()
>>>>> 
>>>>>> Ø I'm a little curious as to why we conspicuously left it out of mpif.h.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> When I remember correctly, MPI_Status_f2f08() and _f082f() subroutines were for
>>>>>> a smooth transition from Fortran 77 to Fortran 08.
>>>>>> 
>>>>>> I.e. if a programmer has changed some functions from old Fortran to Fortran 08
>>>>>> and uses other libraries or subroutines which still use the old Fortran status
>>>>>> as input or output argument, it was possible to transfer the old Fortran status
>>>>>> within the Fortran 08 subroutine. But it was never intended that the programmer
>>>>>> does this transformation within the old Fortran subroutine (and old Fortran 77
>>>>>> compiler or using Fortran 77 language kind wouldn’t support Type(MPI_Status) in
>>>>>> mpif.h).
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Hubert
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> From: mpiwg-fortran [mailto:mpiwg-fortran-bounces at lists.mpi-forum.org] On Behalf
>>>>>> Of Jeff Squyres (jsquyres) via mpiwg-fortran
>>>>>> Sent: Wednesday, July 15, 2020 5:26 PM
>>>>>> To: MPI Fortran WG <mpiwg-fortran at lists.mpi-forum.org>
>>>>>> Cc: Jeff Squyres (jsquyres) <jsquyres at cisco.com>
>>>>>> Subject: Re: [MPIWG Fortran] Question about MPI_Status_f2f08() and _f082f()
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Just to bring this thread back on-track about TYPE(MPI_Status)...
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Off list, I asked Rolf R. about this issue -- he cited the same things I did,
>>>>>> plus a few more:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On your question on TYPE(MPI_Status), TYPE(MPI_Comm), ...:
>>>>>> 
>>>>>> 
>>>>>> MPI-3.1
>>>>>> 
>>>>>> 
>>>>>> - page 607 lines 18-24 require these types and the overloaded
>>>>>> 
>>>>>> 
>>>>>> operators .EQ./.NE. for mpi_f08 module
>>>>>> 
>>>>>> 
>>>>>> - page 609 lines 34-36 require these types and the overloaded
>>>>>> 
>>>>>> 
>>>>>> operators .EQ./.NE. for mpi module
>>>>>> 
>>>>>> 
>>>>>> - there is no such text on page 611-612 on mpif.h
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> And page 802 lines 9-15 also Show that it was never intented to add
>>>>>> 
>>>>>> 
>>>>>> These types anf routines to old mpif.h.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> It would be helpful, to add at least on page 657 line 11
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> C, some in both C and Fortran (only in the mpi_f08 and mpi modules).
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Can you fix this with an one-vote-bug-fix-issue?
>>>>>> 
>>>>>> 
>>>>>> Because it is not good if the information must be taken from the change-log.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---
>>>>>> 
>>>>>> 
>>>>>> Summary:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Does this mean that TYPE(MPI_Status)
>>>>>> 
>>>>>> 
>>>>>> [ and the Fortran routines MPI_STATUS_F2F08 and _F082F ]
>>>>>> 
>>>>>> 
>>>>>> needs to be defined in
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> - mpif.h? NO
>>>>>> 
>>>>>> 
>>>>>> - and the mpi module? YES
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Bug-fix needed in MPI-3.1 page 657 line 11: add
>>>>>> 
>>>>>> 
>>>>>> "(only in the mpi_f08 and mpi modules)" at the end.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> I hope this helps.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Best regards
>>>>>> 
>>>>>> 
>>>>>> Rolf
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> So I think there's at least a clarification here: the TYPE(MPI_Status) and
>>>>>> associated functions is -- at a minimum -- supposed to be in the mpi module.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> I'm a little curious as to why we conspicuously left it out of mpif.h.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Bill: this is somewhat counter to the clarification you proposed.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Are you ok with this? I think the text in the standard supports what Rolf
>>>>>> proposes.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Jul 10, 2020, at 12:11 PM, Jeff Squyres (jsquyres) via mpiwg-fortran < [
>>>>>> mailto:mpiwg-fortran at lists.mpi-forum.org | mpiwg-fortran at lists.mpi-forum.org ]
>>>>>>> wrote:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Jul 10, 2020, at 11:18 AM, Bill Long < [ mailto:longb at cray.com |
>>>>>> longb at cray.com ] > wrote:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> In the “change” section there is this txt:
>>>>>> 
>>>>>> • Within the mpi_08 Fortran module, the status was defined as TYPE(MPI_Status).
>>>>>> Additionally, within both the mpi and the mpi_f08 modules, the constants
>>>>>> MPI_STATUS_SIZE, MPI_SOURCE, MPI_TAG, MPI_ERROR, and TYPE(MPI_Status) are
>>>>>> defined. New conversion routines were added: MPI_STATUS_F2F08,
>>>>>> MPI_STATUS_F082F, MPI_Status_c2f08, and MPI_Status_f082c, In mpi.h, the new
>>>>>> type MPI_F08_status, and the external variables MPI_F08_STATUS_IGNORE and
>>>>>> MPI_F08_STATUSES_IGNORE were added.
>>>>>> 
>>>>>> 
>>>>>> Good point.
>>>>>> 
>>>>>> Just to be clear, you're referring to the changelog section in MPI-3.1,
>>>>>> specifically bullet 30 on p802.
>>>>>> 
>>>>>> That being said:
>>>>>> 
>>>>>> - the changelog is non-binding ...but it does indicate our intent from that time
>>>>>> - the changelog text states that the mpi module has TYPE(MPI_Status) -- but it
>>>>>> does not say it was added to mpif.h
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 1) Why would the F08 status be defined different from the C definition? (If that
>>>>>> were the case, conversions between f08 and C would be irrelevant).
>>>>>> 
>>>>>> 
>>>>>> I remember that there was a lot of discussion about this at the time, which is
>>>>>> what resulted in Figure 17.1.
>>>>>> 
>>>>>> I know there were discussions about making the F08 and C statuses the same, but
>>>>>> for some reason we chose not to mandate it. Perhaps we wanted to allow
>>>>>> implementations to do whatever they wanted...? (e.g., allow Status_c2f08 be a
>>>>>> no-op if the implementation wanted to, but not mandate it)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 2) \begin{unpopular} Why are the legacy mpi module and mpif.h still included in
>>>>>> the spec? These are embarrassingly obsolete. If this was fixed, none of the
>>>>>> above mentioned conversion routines would be needed. \end(unpopular}
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> I would love it if we could ditch -- at a minimum -- mpif.h.
>>>>>> 
>>>>>> However, there's oodles of legacy code out there that uses it. That's why even
>>>>>> deprecating it gets shouted down at Forum meetings.
>>>>>> 
>>>>>> --
>>>>>> Jeff Squyres
>>>>>> [ mailto:jsquyres at cisco.com | jsquyres at cisco.com ]
>>>>>> 
>>>>>> _______________________________________________
>>>>>> mpiwg-fortran mailing list
>>>>>> [ mailto:mpiwg-fortran at lists.mpi-forum.org | mpiwg-fortran at lists.mpi-forum.org ]
>>>>>> [ https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran |
>>>>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran ]
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> Jeff Squyres
>>>>>> [ mailto:jsquyres at cisco.com | jsquyres at cisco.com ]
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Click [
>>>>>> https://www.mailcontrol.com/sr/HjGlLo600jvGX2PQPOmvUuToodiywuSOXttD3rcwKg2CvP2Zmks-Y-w2Bv6lGox3acbEaKe314w5W2BPFL9JFA==
>>>>>> |
>>>>>> here ] to report this email as spam.
>>>>>> 
>>>>>> _______________________________________________
>>>>>> mpiwg-fortran mailing list
>>>>>> mpiwg-fortran at lists.mpi-forum.org
>>>>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran
>>>>> 
>>>>> --
>>>>> Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de .
>>>>> High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 .
>>>>> University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 .
>>>>> Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner .
>>>>> Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) .
>>>>> _______________________________________________
>>>>> 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
>>>> 
>>>> _______________________________________________
>>>> mpiwg-fortran mailing list
>>>> mpiwg-fortran at lists.mpi-forum.org
>>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-fortran
>> 
>> -- 
>> Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de .
>> High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 .
>> University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 .
>> Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner .
>> Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) .
> 
> 
> -- 
> 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