(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting

Aleksandar Donev donev1
Tue May 27 13:17:20 EDT 2008

On Tuesday 27 May 2008 08:55, Dan Nagle wrote:

> The MPI specification says "don't touch the buf memory" between
> the MPI async send/recv and the MPI wait. ?(The other actual args
> may be treated ordinarily.)
This is exactly what we say for ASYNCHRONOUS objects (don't reference or 
define them while they are a pending I/O affector or whatever we call that).

> What Fortran should say is "between these two subroutine references,
> don't read/write this actual argument" and I don't think we currently
> have a way to say that. ?:-(
We don't, but we do have the BLOCK construct to delimit the region where 
touching the actual argument is "dangerous". There is a difference of course, 
as you say, VOLATILE allows one to reference/define the actual during the 
BLOCK and it is reloaded/loaded from memory thus possible messing up the MPI 
action. But in this case I think just trusting the programmer not to meddle 
with the actual (as per MPI standard instructions) inside the BLOCK is good 
enough of a solution, especially given MPI is external to our standard. 

I would have preferred extending ASYNCHRONOUS to user-defined async I/O, but 
that's more work than we can do now. I think for now the most important thing 
is to find a good way (pleeaaase!) to handle void* arguments.


More information about the J3 mailing list