(j3.2006) MPI usage problems in Fortran
Craig Rasmussen
crasmussen
Tue Mar 18 18:04:52 EDT 2008
On Mar 18, 2008, at 2:42 PM, Aleksandar Donev wrote:
> On Tuesday 18 March 2008 11:50, Bill Long wrote:
>
>> Why not the ASYNCHRONOUS attribute instead? If you think of the MPI
>> data transfers as "I/O", then this is quite close to what
>> asynchronous
>> was designed for.
> Sounds wonderful in theory, however, if you actually read the words
> you
> realize asynchronous was not "designed" (at least not
> intelligently :-). In
> fact, I have asked the committee what asynchronous really means
> especially
> with respect to dummy arguments with no satisfactory response.
>
So I think ASYNCHRONOUS is exactly what is needed. There are major
advantages with ASYNCHRONOUS:
1. "An object may have the asynchronous attribute in a particular
scoping unit without necessarily having it in other scoping units."
Thus the programmer only need contaminate his declarations where MPI
asynchronous I/O is done.
2. From NOTE 5.4. "This information could be used by the compiler to
disable certain code motion optimizations." Again, exactly what is
needed.
So Aleks, what's your beef with the intelligent design of ASYNCHRONOUS?
> The VOLATILE attribute was designed for this, I believe, but it
> will kill all
> optimizations, even after the call to the Wait routine completes. And
> VOLATILE has similar issues as ASYNCHRONOUS with respect to dummy/
> actual
> association and what it means for one/both to be VOLATILE.
>
> Neither solves any kind of copy in/out problem. Only TARGET+assumed-
> shape does
> that. The assumed-shape being critical.
But TARGET has performance issues that extend outside of the scoping
unit (I assume). Plus if I declare a dummy to have the target
attribute, the actual argument need not have the target attribute so
the user simply won't add it. I want these errors to be caught at
compiler time.
Regards,
Craig
More information about the J3
mailing list