top_left或top_right邻居的MPI_Cart_shift

时间:2015-02-02 16:45:37

标签: mpi

使用MPI_Cart_shift我将成功获得右边,左边,上边和下边的邻居(例如2D)。但是,如果我想了解邻居,例如top_lefttop_bottom,我将如何使用MPI_Cart_shift

据我所知,它只能通过在MPI_Cart_shift中提供方向和位移作为参数来实现。但是对于角落邻居来说,你有两个方向的位移。

1 个答案:

答案 0 :(得分:1)

我同意高性能标志。我还可以想到两种方式:

(1)找到当前等级的笛卡尔坐标(即每个过程),然后说出例如要查找左上对角线邻居,您需要从坐标中减去一个。然后将这些坐标转换为等级。如果返回-1(在MPICH / IntelMPI中)或返回-2(在OpenMPI中),则进程为MPI_PROC_NULL,否则它是一个有效的进程。

(2)在第一维中使用MPI_Cart_shift()来查找上邻居和下邻居(比如UPDOWN)。然后在第二维中移动并找到UPDOWN的左右邻居。 这些左右邻居是原始进程的对角邻居。

希望有所帮助。