[MPI3 Fortran] (j3.2006) (SC22WG5.3891) [ukfortran] MPI non-blocking transfers
Aleksandar Donev
donev1 at llnl.gov
Thu Jan 22 13:11:01 CST 2009
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: 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