[MPI3 Fortran] MPI non-blocking transfer

N.M. Maclaren nmm1 at cam.ac.uk
Tue Feb 10 17:48:41 CST 2009


On Feb 10 2009, Craig Rasmussen wrote:
>
>I would like to reiterate, the MPI Forum has already received guidance  
>from the J3 Fortran committee regarding this issue.  The guidance is  
>to use the volatile attribute.  I can dig up and resend the official  
>J3 document if you want.  I'll also discuss it further this afternoon  
>and tomorrow.  But I'm not sure the guidance will change.  Somehow the  
>user must give the compiler specific instruction about the usage of  
>the buffer within the Fortran language.

That is not what was said at the ISO/J3 meeting in Tokyo, and I can assure
you that many of us would have voted against such guidance.

The Fortran VOLATILE attribute is unsuitable for MPI non-blocking transfer
buffers, on the grounds of serious inefficiency and incompatibility with
good programming practice.  But there is a worse problem.

If you think about it, allowing an object to be VOLATILE in some scopes and 
not in others makes no sense whatsoever - if the object can change 
unpredictably anywhere, it will obviously change everywhere. I submitted a 
request for an interpretation on this one, but it seems to have got buried, 
so I need to retry.

>You don't really want Fortran to treat buffers like C does as that  
>will slow down all of your Fortran program.

Please don't be ridiculous.  There is not a simple choice between VOLATILE
and 'C semantics' - as has been pointed out at length, the precise semantic
match to MPI non-blocking transfer buffers is the ASYNCHRONOUS attribute.


Regards,
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