[MPI3 Fortran] [ukfortran] (SC22WG5.3920) (j3.2006) (SC22WG5.3917) (SC22WG5.3909) [MPI3 Fortran] MPI non-blocking transfers

N.M. Maclaren nmm1 at cam.ac.uk
Sat Jan 24 05:59:05 CST 2009

On Jan 23 2009, Van Snyder wrote:
>> The copy-in/copy-out problem does not affect MPI_wait.  There's no
>> argument to copy anyway.  Copy-in/copy-out is a serious problem for the
>> earlier call to MPI_Isend, etc. where you do not want the copy temp
>> being the buffer MPI sees, since it will get deleted when the call
>> returns (which is before MPI is done with it.)   This continues with any
>> subsequent call to other routines that have the buffer as the argument,
>> because a copy-out runs the risk of overwriting the buffer with the
>> wrong values.
>The copy-in/copy-out problem appears to be pretty simple:  Define the
>buffer dummy argument of MPI_Isend to be ASYNCHRONOUS and assumed size.
>Then if somebody hands it an assumed-shape or pointer buffer that's not
>contiguous, the code falls afoul of C1239 or C1240.  If the user's data
>isn't contiguous, it's his responsibility to do the copying at the right

I agree.

>I don't see the need for changes in the standard, either for the
>copy-in/copy-out problem, or the code motion problem.  Just define the
>MPI interface properly.

The only change that I think is necessary is some minor wording changes to
extend the description to cover asynchronous I/O performed by a companion
processor as well as Fortran asynchronous I/O.  Technically, that's trivial.

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