[MPI3 Fortran] MPI non-blocking transfers

N.M. Maclaren nmm1 at cam.ac.uk
Wed Jan 21 15:50:38 CST 2009

>> 1)  Preventing code motion by the compiler across a call to an
>> MPI_wait-like subroutine.  This is needed to avoid the possibility that
>> user-coded modifications to the buffer (which is not present as an
>> argument in the call) do not migrate to before the call.  A subroutine
>> prefix keyword simply and completely solves this problem.  I recently
>> sent out such a proposal, with the prefix spelled VOLATILE.  This
>> solution has the desirable feature that no change to the user's source
>> code is needed as long as they already have a 'use mpi' statement, or a
>> compiler switch to cause the same effect.
>A good point.  I see what you are getting at.  It has the disadvantage
>that it applies to ALL variables, which is pretty serious, so it would
>be preferable to spell it ASYNCHRONOUS (or whatever) and have it apply
>only to those.

Upon thinking it over, this applies to buffers used for Fortran asynchronous
I/O today, so that a conforming compiler must assume that any subroutine
call can wait for the transfer.

One can reasonably say that either it needs fixing for the existing 
mechanism, or it doesn't need fixing for MPI.

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