(j3.2006) (SC22WG5.3657) N1755: Request for new features from MPI Forum

N.M. Maclaren nmm1
Tue Nov 11 04:52:49 EST 2008


Here are a few comments on this.


>   1. A mechanism to suppress copy-in/copy-out semantics for MPI
>      asynchronous operations.

That's not enough.  I can't remember whether any compilers actually
did it, but Fortran permits arguments to be passed using Jensen's
device, as well as copy-in/copy-out and reference.  And it is VERY
likely to be used if VOLATILE coarrays are ever supported on systems
that use message-passing for communication.

>   2. Suppress argument checking for MPI choice buffers (C void * formal
>      parameters).

There is a better solution, but I am not sure that we could get there
starting from here.  Some languages allow types to be passed as
procedure arguments.

> A series of straw votes were taken at J3 meeting 184 to determine how to
> address the request from the MPI Forum.  The results were:
> 
>   1. The VOLATILE attribute should be given to both the actual and dummy
>      arguments to suppress copy-in/copy-out.

Ugh.  Don't bet on it working reliably, anyway.  Why should it?  What
the standard says is something entirely different.

> Regarding straw vote 1: 
> 
> A problem with using VOLATILE attribute is that it
> can have performance implications.  Therefore Aleksandar Donev in paper
> 08-255 proposed the following:
> 
> We should explicitly allow a variable with the ASYNCHRONOUS attribute to 
> be modified or examined by means external to the processor, similarly to 
> VOLATILE variables. If such a variable is modified or examined externally 
> during a segment, that variable must not be referenced or define during 
> that segment.

That will introduce performance implications, though perhaps less
serious.  But I really don't like the idea of having to teach kiddies about
coarrays when they want to learn MPI.

What is actually needed is a way of allowing user code to set and clear
a variable's pending state, in the sense used in 9.6.4.  While it would
be a bit tricky to add to Fortran, it would be semantically clean, and
be as efficient as possible.  And, of course, it should be a separate
pending state, with the same semantics, but incompatible with I/O
proper.


Regards,
Nick Maclaren,
University of Cambridge Computing Service,
New Museums Site, Pembroke Street, Cambridge CB2 3QH, England.
Email:  nmm1 at cam.ac.uk
Tel.:  +44 1223 334761    Fax:  +44 1223 334679




More information about the J3 mailing list