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 time.
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. Regards, Nick Maclaren, University of Cambridge Computing Service, New Museums Site, Pembroke Street, Cambridge CB2 3QH, England. Email: [email protected] Tel.: +44 1223 334761 Fax: +44 1223 334679