6.5.6 笛卡尔结构的划分 |
MPI_CART_SUB(comm, remain_dims, newcomm)
IN comm 带有笛卡尔结构的通信子(句柄)
IN remain_dims remain_dims的第i个入口,说明了第i维是否在子网格中保留 (true)或丢掉(false)(逻辑向量)
OUT newcomm 包含子网格的通信子,这个子网格包含了调用进程(句柄)
int MPI_Cart_sub(MPI_Comm com, int *remain_dims, MPI_Comm *newcomm)
MPI_CART_SUB(COMM, REMAIN_DIMS, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR
LOGICAL REMAIN_DIMS(*)
如果一个笛卡尔拓扑已经用MPI_CART_CREATE产生,函数MPI_CART_SUB可以用于将通信子的组划分成子组,以形成更低维的笛卡尔子网格,并且为每一子组建立与其相联系的子网格笛卡尔拓扑的通信子。(这个函数完全相关于函数MPI_COMM_SPLIT)
例6.5假设 MPI_CART_CREATE(..., comm)已定义了一个(2×3×4)的网格。设remain_dims = (false, false, true)。那么调用
MPI_CART_SUB(comm, remain_dims, newcomm),
将产生三个通信子, 每一个通信子在2×4笛卡尔拓扑中带有八个进程。如果remain_dims = (false, false, true),那么对MPI_CART_SUB(comm, remain_dims, comm_new)的调用将产生六个不重叠的通信子, 每一个在一维笛卡尔拓扑中带有四个进程。
Copyright: NPACT |