(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting
Wed May 28 12:42:38 EDT 2008
On May 28, 2008, at 10:06 AM, Dan Nagle wrote:
> On May 28, 2008, at 11:25 AM, Craig Rasmussen wrote:
>> So Bill suggested earlier using the asynchronous attribute instead.
>> Since MPI_Irecv/MPI_Wait specify asynchronous IO operations,
>> ASYNCHRONOUS seems to me to be the correct syntax.
> But to Fortran, they are simply subroutine calls.
> Further, only one actual argument is "asynchronous",
> and that argument doesn't appear on the mpi wait statement.
> How to identify the asynch argument, identify the start
> of the asynch period, identify the end of the asynch period?
> This seems to me to be a job for argument intents,
> rather than an attribute of a variable.
>> Perhaps this would work if we modified the last line to be
>> - any statement of the scoping unit is executed while the
>> variable is a pending I/O storage sequence affector or becomes
>> referenced or defined by an external I/O operation
> OK, I'll bite. What is an "external I/O operation" ?
> How does one start, when has it finished?
Yes, this is the crux of the problem. The compiler would have to
assume that it applies throughout the scope of the variable with the
async attribute. A further problem is to determine what happens if a
Fortran WAIT statement occurs within the same scope?
So would INTENT(ASYNCHRONOUS) be enough for a dummy variable
declaration? I don't understand why any attribute must be applied to
the actual argument. I believe that the MPI Forum could add actual
variable to the MPI_Wait call so that the compiler could have some
information about the begin and end scope of the asynchronous operation.
But what is the start and what is the finish? Perhaps we need
INTENT(ASYNC_BEGIN) and INTENT(ASYNC_END).
More information about the J3