(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting
dick.hendrickson at att.net
Thu May 29 16:43:37 EDT 2008
-------------- Original message from Dan Nagle <dannagle at verizon.net>: --------------
> On May 29, 2008, at 1:35 PM, Bill Long wrote:
> > The problem
> > with some C library routines (including many in MPI) is that our
> > interface does not handle (void *) dummy arguments well. Fixing
> > that is
> > a big part of the current discussion.
> Yes, void* dummy arguments are a big part of it.
> The other part is how to mark asynch actuals.
One of the old Cray compilers had a "BLOCK" directive. It
acted as if it was a CALL to a subroutine with
unknowable insides and an argument list that contained every
accessible variable. The net effect was that the optimizer
couldn't do any code motion across the CALL in either direction.
Suppose you did something similar and invented a BLORTZ attribute
for subroutines. If a subroutine has the attribute, then no code
can be moved across the call and no variables can be kept
in registers across the call. It's a heavy hammer, in that it
marks all of the accessible variables as if they were asynchronous
across an MPI call; but, as Bill hinted at, I bet that not many
compilers are able to generate code that keeps things in registers
across a CALL and is measurably cost effective.
This separates the problem. The user already has to not
touch any variables that MPI is using asynchronously.
All the BLORTZ attribute will do is prevent the compiler
from moving safe code into an unsafe region.
It seems to me that using variables asynchronously is more
of a subroutine property than a variable property.
> If we can specify those two issues, we can cover MPI
> and a lot of other communications and storage libraries as well.
> Dan Nagle
> J3 mailing list
> J3 at j3-fortran.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the J3