Re: [MPI3 Fortran] (j3.2006) (SC22WG5.3891) [ukfortran] MPI non-blocking transfers
On Thursday 22 January 2009 10:59, Bill Long wrote:
Only for statements that might involve references or definitions of a volatile variable. �The rest of the code can be optimized normally. � Which is exactly what we need here. No. Take:
! complex calculations using array to calculate values: call mpi_isend(array,...) ... ! array not modified here call mpi_wait(...) ! more calculations involving array reading the values Surely it is ok, desirable, or even necessary to optimize the calculations???
ASYNCHRONOUS only disables code motion accross waits and certain argument associations (such as more care with copy in/out). The rest of the code can be optimized as usual.
If that's the case, then there is a serious problem with ASYNCHRONOUS But these are covered by the "disables...certain argument associations" part of my sentence. In particular, depending on whether the actual/dummy are (both) asynchronous, some transformations (e.g., copy in/out for the hell of it, copy in/out of more than the piece of the actual, code motion accross the argument call, etc.) should be disabled. I understand no compiler actually implements asynchronous so no implementor has actually pinned down the list of what optimizations are "not allowed", but I can assure you, the list is much smaller than for volatile, which, disables even the most basic optimization, such as using registers during a calculation loop.
Best, Aleks -- Aleksandar Donev, Ph.D. Lawrence Postdoctoral Fellow @ Lawrence Livermore National Laboratory High Performance Computational Materials Science and Chemistry E-mail: [email protected] 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
participants (1)
-
Aleksandar Donev