(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