(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting
Aleksandar Donev
donev1
Tue May 27 17:37:54 EDT 2008
On Tuesday 27 May 2008 13:54, Bill Long wrote:
> ?Preventing copy-in/copy-out is the goal
> here. The other, normal aspects of VOLATILE are not relevant for this
> example.
I very much disagree. Copy in/out is only part of the story and VOLATILE
actually does not give that---TARGET or C_LOC does. To make something like
MPI-2 async I/O work, (at least) two things are needed:
1) Disable code motion optimizations that move data accesses across. This is
what ASYNCHRONOUS does (and what, for example, the MRC book says is its
purpose). So does VOLATILE, with a bigger hammer (it disables literally all
optimizations, even storing in registers).
2) Copy in/out must not happen. This is guaranteed if TARGET is
used "properly", and will also in practice work for VOLATILE/ASYNCHRONOUS
with some additional compile-time checks (the compiler will abort if the
actual is not simply contiguous thus not being able to guarantee copyless
argument passing).
Aleks
More information about the J3
mailing list