MPI_Type_create_subarray 函数

定义由 n 维数组的 n 维子数组组成的新数据类型。 子数组可以位于完整数组中的任意位置。 只要它完全包含在数组中,它就可以是任何非零大小。

语法

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
);

参数

ndims

数组维度的数量和 array_of_sizes中的元素数, array_of_subsizesarray_of_starts 参数。

array_of_sizes

完整数组每个维度中的元素数。

array_of_subsizes

子数组的每个维度中的元素数。

array_of_starts

每个维度中子数组的起始索引。

order

维度的顺序。

MPI_ORDER_C

给定行的所有元素连续存储的行主顺序。

MPI_ORDER_FORTRAN

给定列的所有元素连续存储的列主列顺序。

注意

C 和 Fortran 程序都可以使用任一顺序。 定义的值反映典型用法。

 

oldtype

指定每个元素的数据类型。

newtype [out]

返回时,包含表示新数据类型 的MPI_Datatype 句柄。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

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

注解

如果子数组的大小超过数组的大小,函数将返回错误。 对于每个维度 i,array_of_subsizes[i] 参数的值必须大于或等于 1 且小于或等于 array_of_sizes[i] 参数。

如果子数组在数组的边界之外开始或结束,函数将返回错误。 对于任何维度 i,参数的值必须为零, array_of_starts[i]array_of_subsizes[i] 参数的总和必须小于或等于 array_of_sizes[i] 参数的值。 例如,如果子数组的大小与数组相同,则子数组必须从索引零开始。 假定数组从零开始编制索引。

要求

产品

HPC Pack 2012 MS-MPI 可再发行程序包、HPC Pack 2008 R2 MS-MPI 可再发行程序包、HPC Pack 2008 MS-MPI 可再发行程序包或 HPC Pack 2008 客户端实用工具

标头

Mpi.h;Mpif.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 数据类型函数