[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