(j3.2006) an alternative to Aleks' asynchronous proposal
Thu Jun 19 18:00:02 EDT 2008
On Thursday 19 June 2008 14:37, Dick Hendrickson wrote:
> The persistent subroutine
> is allowed to access, define, reference, undefined,
> or anything else to arguments that it maintains
> (or acquires from another persistent subroutine)
> an association to.
The persistent subroutine returned and is no longer executing. So it cannot do
anything. Allowing variables to be modifed externally (asynchronously) at
will, without a special attribute, is IMO a big mistake likely to lead to
conflicts between compilers (who think they are optimizing), and users (who
think they know what the compiler is optimizing).
> It is entirely the programmers responsibility to
> correctly use variables passed as arguments to
> persistent routines.
And it is our responsibility to tell the programmer what is correct, and what
is not. I tried to do exactly that. And "generally speaking" does not cut
muster. This is a programming language standard, not a tutorial or a book one
buys on amazon.com.
> However, Aleks seem to be trying to shoehorn
> MPI into some sort of asynchronous I/O and
> coarray syncmemory model.
I cannot understand why and what I am shoehorning. I am giving an extended
meaning to the ASYNCHRONOUS attribute, and I am doing nothing at all to or
with async (Fortran) I/O. MPI non-blocking communication is a form of
asynchronous data transfer, so using the ASYNC attribute seems more than
appropriate to me. The so-called "coarray sync memory model", if you look at
it more closely, has less to do with coarrays and more to do with
optimizations and preventing code motion for variables whose values change
due to actions unknown (or too complex to analyze) to the compiler. Exactly
what happens here. That is, of course, IMO and you are welcome to disagree.
More information about the J3