6.5.5笛卡尔轮换定位

BACKWARD FORWARD


如果进程拓扑是笛卡尔结构,MPI_SENDRECV操作用于在坐标方向上执行数据轮换。作为输入,MPI_SENDRECV将源进程的标识数作为接受,目标进程的标识数作为发送。如果一个笛卡尔进程组调用函数MPI_CART_SHIFT,那么此函数将上面的标识符提供给调用进程,然后将其传送给MPI_SENDRECV。用户说明坐标方向和步长(正数或负数)。此函数是居域的。

MPI_CART_SHIFT(comm, direction, disp, rank_source, rank_dest)

int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)

MPI_CART_SHIFT(COMM, DIRECTION, DISP, RANK_SOURCE, RANK_DEST, IERROR)

依赖于被说明的坐标方向上的笛卡尔组的周期性,MPI_CART_SHIFT提供用于循环或末尾轮换的标识符。对于末尾轮换情况,值MPI_PROC_NULL可以在rank_source或rank_dest中返回,这说明用于轮换的源或目的超出范围。

例6.4通信子comm存在一个与其相连的二维、周期性的笛卡尔拓扑。一个二维REAL型的矩阵存储在变量A中,每一进程一个元素。人们希望通过i步轮换第i列(垂直的,例如,沿着列)来扭斜这个矩阵。

C find process rank

C find cartesian coordinates

C compute shift source and destination

C skew array


Copyright: NPACT BACKWARD FORWARD