[MPI3 Fortran] (j3.2006) (SC22WG5.3891) [ukfortran] MPI non-blocking transfers

Bill Long longb at cray.com
Thu Jan 22 12:59:27 CST 2009

Aleksandar Donev wrote:
> On Thursday 22 January 2009 09:10, Bill Long wrote:
>> If we use a different name, like
>> ASYNC_EXTERNAL, is there any difference between that and VOLATILE?  I
>> suspect not.
> Yes, I explained this a long time ago, many times, but we go in circles 
> again.
> For one thing, VOLATILE has some ill-defined semantics.

Vendors seem to know what to do.  The VOLATILE concept is utterly 
trivial to implement.

> For two, VOLATILE disables all optimization. 

Only for statements that might involve references or definitions of a 
volatile variable.  The rest of the code can be optimized normally.  
Which is exactly what we need here.

> ASYNCHRONOUS only disables 
> code motion accross waits and certain argument associations (such as 
> more care with copy in/out). The rest of the code can be optimized as 
> usual. 

If that's the case, then there is a serious problem with ASYNCHRONOUS, 
as illustrated by Nick's examples.  In most places in a code, VOLATILE 
and ASYNCHRONOUS have exactly the same effect on optimization.  In fact, 
the simplest implementation of ASYNCHRONOUS that is semantically safe is 
to make is synonym for VOLATILE.

> Surely this is important for a high-performance library like 
> MPI.

The high performance part of MPI occurs inside the library routines.  
That's unaffected by the declaration of the buffer outside.
>> The other is that it incorrectly suggests that MPI calls
>> have something to do with I/O which is not the case (except for the
>> actual MPI I/O calls
> And I already explained this a long time ago, and even quoted you the 
> Wikipedia definition of I/O. But if you care not to listen, that is 
> fine, let's continue going in circles.

I forgot that I was addressing more than the Fortran list.  I meant that 
MPI has nothing to do with the Fortran concept of I/O (not 
Wikipedia's).  When we're talking about a Fortran's asynchronous 
attribute, it seems reasonable to relate it to Fortran's concept of I/O.


> Best,
> Aleks
> _______________________________________________
> J3 mailing list
> J3 at j3-fortran.org
> http://j3-fortran.org/mailman/listinfo/j3

Bill Long                                   longb at cray.com
Fortran Technical Support    &              voice: 651-605-9024
Bioinformatics Software Development         fax:   651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120


More information about the mpiwg-fortran mailing list