[MPI3 Fortran] [ukfortran] (SC22WG5.3898) (j3.2006) MPI non-blocking transfers
N.M. Maclaren
nmm1 at cam.ac.uk
Thu Jan 22 14:08:52 CST 2009
On Jan 22 2009, Aleksandar Donev wrote:
>On Thursday 22 January 2009 11:40, Bill Long wrote:
>
>> The only safe thing for the
>> compiler to do is treat array as volatile throughout the subprogram
>> containing these two calls.
>
>No! For ASYNCHRONOUS, there is a restriction on the *programmer* that if
>array is referenced/defined, it is not currently a pending I/O
>affector. This is the same as for coarrays, which may make things
>clearer: If a coarray is defined/referenced, the compiler can fully
>optimize without worrying about other images, *in-between*
>image-control statements. The same logic applies for
>ASYNCHRONOUS---optimize unless you see a WAIT. Note however that some
>of the optimizations Nick mentioned should also be disabled for
>coarrays. Notably, a piece of a coarray that is *not*
>referenced/defined in a segment *may* indeed be referenced/defined by
>other images. So the optimizer must not touch those pieces, even in
>what would be harmless ways in a serial code.
Yes, precisely.
>For a classic (serial) optimizer, ASYNCHRONOUS and coarrayness and
>threading and all of those things are essentially the same: Something
>else, which is not included in the classic control/data flow analysis,
>can store/load certain values, which are marked in some sense (via
>CODIMENSION/ASYNCHRONOUS/VOLATILE attribute). Do you think all coarrays
>are effectively VOLATILE??? If not, then the same applies to
>ASYNCHRONOUS variables.
Again, precisely.
Regards,
Nick Maclaren,
University of Cambridge Computing Service,
New Museums Site, Pembroke Street, Cambridge CB2 3QH, England.
Email: nmm1 at cam.ac.uk
Tel.: +44 1223 334761 Fax: +44 1223 334679
More information about the mpiwg-fortran
mailing list