The following function replaces the three functions MPI_TYPE_UB, MPI_TYPE_LB and MPI_TYPE_EXTENT. It also returns address sized integers, in the Fortran binding. The use of MPI_TYPE_UB, MPI_TYPE_LB and MPI_TYPE_EXTENT is deprecated.
MPI_TYPE_GET_EXTENT(datatype, lb, extent) | |
IN datatype | datatype to get information on (handle) |
OUT lb | lower bound of datatype (integer) |
OUT extent | extent of datatype (integer) |
int MPI_Type_get_extent(MPI_Datatype datatype, MPI_Aint *lb, MPI_Aint *extent)
MPI_TYPE_GET_EXTENT(DATATYPE, LB, EXTENT, IERROR)
INTEGER DATATYPE, IERROR
INTEGER(KIND = MPI_ADDRESS_KIND) LB, EXTENT
{ void MPI::Datatype::Get_extent(MPI::Aint& lb, MPI::Aint& extent) const (binding deprecated, see Section Deprecated since MPI-2.2
) }
Returns the lower bound and the extent of
datatype
(as defined in Section Lower-Bound and Upper-Bound Markers
on page Lower-Bound and Upper-Bound Markers
).
MPI allows one to change the extent of a datatype, using lower bound
and upper bound markers ( MPI_LB and MPI_UB).
This is useful, as it allows to control the stride of successive
datatypes that are replicated by datatype constructors, or are
replicated by the count argument in a send or receive
call. However, the current mechanism for achieving it is
painful; also it is restrictive. MPI_LB and
MPI_UB are ``sticky'': once present in a datatype, they
cannot be overridden (e.g., the upper bound can be moved up, by
adding a new MPI_UB marker, but cannot be moved down
below an existing MPI_UB marker).
A new type constructor is provided to facilitate these changes.
The use of MPI_LB and MPI_UB is deprecated.
int MPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb, MPI_Aint extent, MPI_Datatype *newtype)
MPI_TYPE_CREATE_RESIZED(OLDTYPE, LB, EXTENT, NEWTYPE, IERROR)
{ MPI::Datatype MPI::Datatype::Create_resized(const MPI::Aint lb, const MPI::Aint extent) const (binding deprecated, see Section Deprecated since MPI-2.2
) }
Returns in newtype a handle to a new datatype that is
identical to oldtype, except that the lower bound of this new
datatype is set to be lb, and its upper bound is set to be
lb + extent.
Any previous lb and ub markers are erased,
and a new pair of lower bound and upper bound markers are put in the
positions indicated by the lb and extent arguments.
This affects the behavior of the datatype when used in communication
operations, with count >1, and when used in the
construction of new derived datatypes.
It is strongly recommended that users use these two new functions,
rather than the old MPI-1 functions to set and access lower bound, upper
bound and extent of datatypes.
( End of advice to users.)
MPI_TYPE_CREATE_RESIZED(oldtype, lb, extent, newtype) IN oldtype input datatype (handle) IN lb new lower bound of datatype (integer) IN extent new extent of datatype (integer) OUT newtype output datatype (handle)
INTEGER OLDTYPE, NEWTYPE, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) LB, EXTENT
Advice to users.
Up: Derived Datatypes
Next: True Extent of Datatypes
Previous: Lower-Bound and Upper-Bound Markers
Return to MPI-2.2 Standard Index
Return to MPI Forum Home Page
(Unofficial) MPI-2.2 of September 4, 2009
HTML Generated on September 10, 2009