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


More information about the J3 mailing list