MPI_Type_create_subarray function
Defines a new data type that consists of an n-dimensional subarray of an n-dimensional array. The subarray can be located anywhere within the full array. It can be any nonzero size as long as it is fully contained within the array.
Syntax
int MPIAPI MPI_Type_create_subarray(
int ndims,
_In_count_(ndims) int array_of_sizes[],
_In_count_(ndims) int array_of_subsizes[],
_In_count_(ndims) int array_of_starts[],
int order,
MPI_Datatype oldtype,
_Out_ MPI_Datatype *newtype
);
Parameters
ndims
The number of array dimensions and the number of elements in the array_of_sizes, array_of_subsizes and array_of_starts parameters.
array_of_sizes
The number of elements in each dimension of the full array.
array_of_subsizes
The number of elements in each dimension of the subarray.
array_of_starts
The starting index of the subarray in each dimension.
order
The order of the dimensions.
MPI_ORDER_C
The row-major order in which all the elements for a given row are stored contiguously.
MPI_ORDER_FORTRAN
The column-major order in which all the elements for a given column are stored contiguously.
Note
Both C and Fortran programs can use either order. The defined values reflect typical usage.
oldtype
Specifies the data type of each element.
newtype [out]
On return, contains an MPI_Datatype handle that represents the new data type.
Return value
Returns MPI_SUCCESS on success. Otherwise, the return value is an error code.
In Fortran, the return value is stored in the IERROR parameter.
Fortran
MPI_TYPE_CREATE_SUBARRAY(NDIMS, ARRAY_OF_SIZES, ARRAY_OF_SUBSIZES, ARRAY_OF_STARTS, ORDER, OLDTYPE, NEWTYPE, IERROR)
NDIMS, ARRAY_OF_SIZES, ARRAY_OF_SUBSIZES, ARRAY_OF_STARTS, ORDER, OLDTYPE, NEWTYPE, IERROR
Remarks
The function returns an error if the size of the subarray exceeds the size of the array. For each dimension i, the value of array_of_subsizes[i] parameter must be greater than or equal to one and less than or equal to the array_of_sizes[i] parameter.
The function returns an error if the subarray starts or ends outside the bounds of the array. For any dimension i, the value of parameter must be zero and the sum of the array_of_starts[i] and array_of_subsizes[i] parameters must be less than or equal to the value of the array_of_sizes[i] parameter. For example, if the subarray is the same size as the array, then the subarray must start at index zero. Arrays are assumed to be indexed starting from zero.
Requirements
Product |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package or HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Library |
Msmpi.lib |
DLL |
Msmpi.dll |