[MPI3 Fortran] Proposed solution for the volatile buffer problem

Aleksandar Donev donev1 at llnl.gov
Wed Jan 14 15:16:39 CST 2009


> Sorry, but THAT misses the point!  If the volatility applies just
> over the actual call, then even flagging all of MyIsend, MyIrecv,
> MyWait, MPI_Isend, MPI_Irecv and MPI_Wait won't help. 
Actually, only the MPI routines themselves should be flagged. The 
compiler would have to assume, in the absence of extra information, 
that any routine may include a call to these "flagged" routines.

> Remember that 
> the update can occur at ANY time between starting the transfer and
> waiting for its completion, including when control is inside
> Transfer.
But, isn't it prohibited to touch buffer while there is a pending 
transfer? Just like we restrict for ASYNCHRONOUS variables in Fortran. 
If so, then any access to any of the variables can be freely optimized, 
with the *only* exception being that code cannot be moved accross 
certain calls, that is, all variables need to be refreshed after and 
flushed before.

This is not to say I am advocating for Bill's proposal---I am a firm 
believer that variables liable to change out of the blue *must* be 
marked as such. But, I am trying to understand what you two are arguing 


More information about the mpiwg-fortran mailing list