笛卡儿拓扑的定义
MPI_CART_CREATE(comm_old, ndims, dims, periods, reorder, comm_cart)
IN comm_old 输入通信域(句柄)
IN ndims 笛卡尔网格的维数(整数)
IN dims 大小为ndims的整数数组,定义每一维的进程数(整数数组)
IN periods 大小为ndims的逻辑数组,定义在一维上网格的周期性(逻辑数组)
IN reorder 标识数是否可以重排序(逻辑型)
OUT comm_cart 带有新的笛卡尔拓扑的通信域(句柄)
int MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims, int *periods,
int reorder, MPI_Comm *comm_cart)
MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER,
COMM_CART, IERROR)
INTEGER COMM_OLD, NDIMS, DIMS(*), COMM_CART, IERROR
LOGICAL PERIODS(*), REORDER

MPI_CART_CREATE用于描述任意维的笛卡尔结构。对于每一维,说明进程结构是否是周期性的。MPI_CART_CREATE返回一个指向新的通信域的句柄,这个句柄与笛卡尔拓扑信息相联系。如果reorder = false,那么在新的进程组中每一进程的标识数就与在旧进程组中的标识数相一致。否则,该调用会重新对进程编号。该调用得到一个ndims维的处理器阵列,每一维分别包含dims[0],dims[1],...,dims[ndims-1]个处理器。如果虚拟处理器阵列包含的总的处理器个数dims[1]*dims[1]*...*dims[ndims-1]小于旧的通信域comm_old包含的进程的个数,则有些进程返回的通信域为MPI_COMM_NULL,类似与MPI_COMM_SPLIT的情况,如果虚拟处理器阵列说明的处理器个数大于旧的通信域comm_old包含的进程的个数,则该调用出错。