[MPI3 Fortran] Proposing changes to Fortran 2008
Jeff Squyres
jsquyres at cisco.com
Thu Apr 17 12:18:13 CDT 2008
I have an 11-noon US Eastern time call scheduled on Tue, Apr 22, but
am otherwise free.
On Apr 17, 2008, at 12:07 PM, Craig Rasmussen wrote:
> From my point of view the discussions so far have been exceptional.
> They are bringing out the precise problems we have in calling MPI
> from Fortran. I would like to have a conference call next week to
> discuss these issues further. Could we have a call early Tuesday
> morning so that both European and American continents can
> participate? What would be the latest time for a call from a
> European perspective?
>
> A couple of general comments on the discussions so far:
>
> 1. Regarding copyin/copyout. The difficulty here arises from the
> fact that Fortran has richer array semantics than does C; in this
> instance it is a much higher-level language than C. Therefore one
> SHOULD expect problems in calling C from Fortran if one steps
> outside of the bounds of the Fortran C interop standard. It is not
> the fault of Fortran nor compiler implementations.
>
> 2. However, given the performance penalty of the target attribute,
> it would be appropriate for the MPI Forum to request that the
> Fortran committee try to fix this performance problem by changing
> the standard. I'll draft a letter that Rich Graham could send to
> the J3 commitee. We can discuss the letter at the next MPI Forum
> meeting.
>
> 3. Regarding the ASYNCHRONOUS extension Hubert suggests. Bill Long
> (Cray) on the J3 committee has already mentioned something like this
> as a possibility. Since Bill is head of the HPC subcommittee on J3,
> I'm sure we will discuss this at the next J3 committee meeting in May.
>
> 4. It may be that the two committees (J3 and MPI Forum) can arrive
> at a solution that maintains performance AND clearly spells out what
> won't work and the Fortran MPI programmer should not attempt to do,
> even if it happens to work for one compiler or particular section of
> code. The Fortran standard has lots of "thou shalt nots" and the
> MPI Fortran standard should specify constraints as well, where
> appropriate. One of these constraints was already pointed out by
> Aleks that one is not allowed to read or modify variables while
> asynchronous input I/O is pending.
>
> Regards,
> Craig
>
>
> On Apr 16, 2008, at 10:33 AM, Hubert Ritzdorf wrote:
>>>
>>>
>>>> I am probably looking for an extension of the ASYNCHRONOUS (not
>>>> VOLATILE)
>>>>
>>> Why not VOLATILE---is there a difference? The only difference, as
>>> far as I know, is that ASYNC is restricted to Fortran async I/O,
>>> and volatile for everyting "outside of the Fortran standard".
>>> Sounds to me like VOLATILE is exactly what you want. Unless you
>>> want somewhat different semantics/constraints (which is not
>>> presently the case---the only difference I know is that ASYNC
>>> attribute is implicitly given to variables involved in async I/O,
>>> while VOLATILE must be explicit).
>>>
>> VOLATILE is different. Volatile means that other processes/threads
>> may change the
>> data. The effect is, that the run-time system has to reload each
>> memory location
>> directly from memory if the application program accesses a variable.
>> This kills any type of optimization and significantly increases the
>> memory traffic.
>>
>> MPI nonblocking communication is quite similar to asynchronous read/
>> write.
>> Therefore, an extension of ASYNCHRONOUS attribute for MPI or other
>> communication libraries would be most appropriate and should cause
>> minimal
>> conflicts with the actual Fortran standard. You can take most of
>> the description
>> of the ASYNCHRONOUS attribute and replace input/output by
>> communication
>> (only the WAIT doesn't fit, since MPI_Wait is not know by the
>> Fortran standard).
>>
>> For example:
>> The ASYNCHRONOUS_EXT is an extension of the ASYNCHRONOUS attribute.
>>
>> NOTE 12.26:
>> The ASYNCHRONOUS_EXT attribute species the variables that might be
>> associated
>> with a pending sequence (the actual memory locations
>> on which (asynchronous, non-blocking) communication is being
>> performed)
>> while the scoping unit is in execution. This information could be
>> used
>> by the compiler to disable certain code motion optimizations.
>>
>> Note 5.8:
>> The constraints on actual arguments that correspond to a dummy
>> argument
>> with ASYNCHRONOUS_EXT attribute are designed to avoid forcing a
>> processor
>> to use the so-called copy-in/copy-out argument passing mechanism.
>> Making a copy of actual arguments whose values are likely to change
>> due
>> to a (non-blocking, asynchronous) communication operation
>> completing or
>> in some unpredictable manner will cause those new values to be lost
>> when a called procedure returns and the copy-out overwrites the
>> actual argument or the application program aborts.
>>
>> The ASYNCHRONOUS_EXT attribute is similar to the VOLATILE and
>> ASYNCHRONOUS
>> attribute. It is intended to facilitate traditional code motion
>> optimizations in the presence
>> of (asynchronous, non-blocking) communication.
>>
>>>
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
--
Jeff Squyres
Cisco Systems
More information about the mpiwg-fortran
mailing list