Re: MPI_TRUE_EXTENT

James Cownie (jcownie@bbn.com)
Mon, 13 May 1996 10:08:29 +0100

Dick says
> My view is that a datatype can only contain offsets. When these
> offsets happen to be offsets from MPI_BOTTOM, they may also be
> absolute addresses. Whether the offsets are from "my_buf" or
> MPI_BOTTOM makes no difference in using MPI_TYPE_EXTENT.

So, what Dick is relying on is that it is permissible to use a
datatype with an absolute address in it along with a buffer pointer
which is not MPI_BOTTOM.

I'm not sure that you're allowed to do that.

Consider p135 in Snir, Otto et al. (I assume the standard has
something identical).

"Implementations may restrict the use of addresses so that arithmetic
on addresses is confined within sequental storage. Namely, in a
communication call, either

The communication buffer specified by buff, count and datatype
arguments is all within the same sequential storage.

or

The initial buffer address argument buff is equal to MPI_BOTTOM,
count=1, and all addresses in the type map of datatype are absolute
addresses of the form v+i where v is an absolute address computed by
MPI_ADDR, i is an integer displacement, and v+i is in the same
sequential storage as v."

This seems to me to allow an implementation to forbid the use of a
datatype with absolute addresses and a buffer address which is not
MPI_BOTTOM in the same call.

(This may not have been its intention, since the concern here is with
segmentation, but it does seem to be a side effect of the wording.)

-- Jim

James Cownie
BBN UK Ltd
Phone : +44 117 9071438
E-Mail: jcownie@bbn.com