[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