[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