[MPI3 Fortran] [Fwd: Library-based ASYNCHRONOUS I/O and SYNC MEMORY]

Aleksandar Donev donev1 at llnl.gov
Fri Sep 5 13:00:54 CDT 2008


Hello,

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---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.

That said, my responses are below.

Thanks,
Aleks


On Friday 05 September 2008 10:42, Jeff Squyres wrote:

> - 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.

> 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.

>    call MPI_Wait(req)
>    SYNC MEMORY my_buffer

Thanks,
Aleks

-- 
Aleksandar Donev, Ph.D.
Lawrence Postdoctoral Fellow @ Lawrence Livermore National Laboratory
High Performance Computational Materials Science and Chemistry
E-mail: donev1 at llnl.gov
Phone: (925) 424-6816  Fax: (925) 423-0785
Address: P.O.Box 808, L-367, Livermore, CA 94551-9900
Web: http://cherrypit.princeton.edu/donev




More information about the mpiwg-fortran mailing list