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

Dan Nagle dannagle
Tue May 27 11:55:15 EDT 2008


I think we blundered with 08-185r1.

Specifically, VOLATILE is exactly the wrong attribute.
VOLATILE means "always go to memory" for this variable.
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.)

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.  :-(

It's not so much that VOLATILE is too big a hammer,
it's that a hammer is exactly the wrong tool for this task.

So I think we talked ourselves into a blunder with this one.
Never design things quickly.  :-)

On May 27, 2008, at 11:43 AM, Craig Rasmussen wrote:

> Two weeks ago I attended the Fortran J3 standards meeting where I  
> discussed with them the issues surrounding new Fortran MPI  
> bindings.  They were very receptive to our needs and instructed me  
> to write a J3 paper in response (attached).  In summary, J3 will try  
> to get changes made in the Fortran standard so that we won't need to  
> use CLOC(buffer) for a void* buffer argument.  J3 still hasn't  
> decided the best way to do this but the likely favorite is a new  
> type, TYPE(*), as an interoperable type with void*.
> J3 also decided that the way to limit copyin/copyout semantics and  
> code motion in asynchronous MPI calls is to use the volatile  
> attribute on both Fortran actual and dummy arguments.  The  
> performance effects of volatile could be limited with the use of the  
> new F2008 block construct.  For example,
>    real, dimension(100) :: buffer
>        VOLATILE :: buf
>        err = MPI_Irecv(buf, ..., req)
>        .
>        .
>        err = MPI_Wait(req, ...)
> The interface for MPI_Irecv would have something like
>    TYPE(*), volatile :: buf
> Cheers,
> Craig
> <08-185r1.txt>
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran


Dan Nagle

More information about the J3 mailing list