Re: MPI_STATUS_IGNORE etc.

William Saphir (wcs@nsgi3.lbl.gov)
Mon, 19 May 1997 14:48:05 -0700

On May 19, 10:27am, William Gropp wrote:
> Subject: Re: MPI_STATUS_IGNORE etc.
> Dick has raised the excellent question of MPI_STATUS_IGNORE in Fortran. There
> is a solution (I think): Fortran now has optional arguments.

We considered this at one point (in the context of ierror),
and the consensus (I think) was to delay consideration
of optional arguments until the "full fortran support" of MPI 2.x

Optional arguments are potentially a win, but they're not
completely straightforward. For instance:

- The MPI_STATUS argument is one candidate. Probably the most
useful one would be IERROR. There's also potential for the
DATATYPE argument (which can for contiguous arrays be inferred
from the type of the buffer argument), the count argument (same
thing) the communicator argument (MPI_COMM_WORLD) the
tag argument (MPI_ANY_TAG) the source argument (MPI_ANY_SOURCE).
I'm not arguing for these, just pointing out that it's a slippery
slope, and that we might want to address all of them at once.

- Optional arguments require a run time determination of whether
an argument exists. This is in critical path code. A possibly
better approach (because it can be done at compile time)
would be to have overloaded functions, one with
the argument and the other without (as is proposed in C++).
The same issue goes for varargs in C.
[In the past, the Forum has worried about things as small as adding
an extra entry to MPI_Status because it might cause a
cache miss. The figure that's thrown around is that on
"some systems" a cache miss takes a microsecond, but these
systems are probably not the ones with 3-4 microsecond MPI latency.
Any implementors with really low latencies care to comment
on how important these issues are?]

- Adding optional arguments in any form requires explicit
interfaces. At this point we allow explicit interfaces but
do not require them. This was controversial, and voted on.

Bill