(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting
Tue May 27 17:48:26 EDT 2008
On Tuesday 27 May 2008 12:44, Dan Nagle wrote:
> The programmer wants the don't-ask/don't-touch to apply from the ?
> transfer call
> to the wait call, which may be in different routines.
Just apply the same rules as we apply to Fortran async I/O. The ASYNC
attribute must be given to the actual and the dummy in both the routine that
starts the transfer and the scoping unit where that routine is called, and
the same for ending the transfer, *and* also for anything that gets executed
in-between the start and end of the transfer (the way I read it, even if the
code does not touch the variable in question, the ASYNC attribute must be
there, explicitly or implicitly). We cannot expect magic to happen and
suddenly all compilers to perform human-grade interprocedural analysis. The
duty falls on the programmer.
> Our standard should be
> consistent with the MPI specification.
But the MPI specification is an onus on the programmer not to interfere with
the data transfer while it is in progress. All we (J3) need is to make sure
the compiler does not do things behind the back of the programmer (like move
code, do copying, store things in temporary storage, etc.) that the
programmer cannot control or know of, so as to at least give the careful
programmer a chance to do it right.
If you want to help the bad programmer by adding some extra compile time
checks that is also good, but the first thing is to just give *a* way to do
it in a portable and safe manner.
> This is for the C TR, not f08.
Either way----the goal is not to bloat the TR to become a new F2012 standard,
but remain focused and small, IMO.
More information about the J3