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: [email protected] Tel.: +44 1223 334761 Fax: +44 1223 334679