[MPI3 Fortran] MPI buffer arguments - void and call-by-reference

Bill Long longb at cray.com
Tue Feb 17 13:52:27 CST 2009



Aleksandar Donev wrote:
> Bill Long wrote:
>> On the surface, the main area of difference between VOLATILE and 
>> ASYNCHRONOUS is that a standard-conforming program is not allowed to 
>> improperly reference or define an asynchronous variable in a part of 
>> the code where it is subject to asynchronous activity.
> There is nothing "on the surface" about this---it is a core and 
> important difference as I already explained. Just like coarrays are 
> rather distinct from VOLATILEs, so are targets of async I/O. I don't 
> care if Cray's compiler treats them the same internally, that is a 
> quality of implementation issue. But the semantics are rather different.
>
The "On the surface" part was explained in the sentence that followed 
the one you quoted.  Unlike ASYNCHRONOUS, a VOLATILE variable may be 
referenced or defined at the same time as when it is being affected by 
some other agent.  However, if you, indeed, don't code any such 
references or definitions (i.e. follow the asynchronous coding rules), 
then it does not really matter whether the variable is declared VOLATILE 
or ASYNCHRONOUS.

Cheers,
Bill




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