[MPI3 Fortran] [Fwd: Library-based ASYNCHRONOUS I/O and SYNC MEMORY]
Jeff Squyres
jsquyres at cisco.com
Fri Sep 5 13:23:25 CDT 2008
On Sep 5, 2008, at 7:00 PM, Aleksandar Donev wrote:
> I am not sure what Craig has told you guys, and why there were no
> comments on
> this when I posted them on this list a while ago---
Sorry about that -- I dimly recall your mails going by, but I assumed
Craig was following up with you. To be blunt: Craig is driving this
process and I'm mainly an interested bystander. Craig was
unfortunately unable to attend our Dublin meeting; we were getting
information about this ASYNC stuff 3rd hand.
> the J3 meeting where these
> were discussed already passed and the ASYNC proposal was not
> accepted. It was
> simply deemed too late to do this. We needed much more public
> support for
> this to get it in. It can be added at the international committee
> level (WG5)
> if another country (not the U.S.) proposes it. If you guys actually
> like
> this, and want to see it in Fortran 2008, action is required by a
> non-US
> member of the MPI Fortran working group.
>
> Note that the TYPE(*) was accepted, but not for Fortran 2008,
> rather, for the
> Interop TR, which should appear after the standard and the hope is
> it will be
> implemented right away (assuming the public demand). Craig and I
> were much
> more interested in seing that pass so we focused on it and let the
> ASYNC pass
> as less important.
I agree; I think this was the right prioritization.
>> - It looks like SYNC MEMORY must be in pairs (it is not explicitly
>> "start" and "stop"). Is that true? If so, is the compiler smart
>> enough to figure out if SYNC MEMORY appears in conditional logic
> Yes, the compiler has to figure these things out, just like it can
> presently
> track data motion in the presence of unknown conditionals. It should
> make
> conservative assumptions where ever it cannot decide one way or
> another.
>
>> - Is there a way to associate the prevent-moving mechanism with a
>> specific buffer? For example, there may be a *large* section of code
>> between the initiation of the MPI non-blocking communication and the
>> termination. Disabling *all* code movement within that section would
>> seem undesirable.
> There is no disabling of code motion within the segment (the piece of
> execution between the SYNC MEMORY statements). It only prevents code
> motion
> *across* the SYNC MEMORY.
Ah, nifty.
>> For example, can we do something like:
>>
>> SYNC MEMORY my_buffer
>> call MPI_Irecv(my_buffer, ....)
>
> my_buffer would not be used in here, during this segment. All known
> Fortran
> optimizations are enabled within this segment, excluding code motion
> outside
> of the segment.
So to be 100% clear: was this ASYNCHRONOUS / SYNC MEMORY stuff
accepted, or is that what you were saying was rejected / too late?
--
Jeff Squyres
Cisco Systems
More information about the mpiwg-fortran
mailing list