什么是虚拟进程拓扑
在很多并行应用进程中,进程的线性排列不能充分的反映进程间在逻辑上的通信模型,通常由问题几何和所用的算法决定,进程经常被排列成二维或者三维网络形式的拓扑模型而通常用一个图来描述逻辑进程排列,此种逻辑进程排列为虚拟拓扑。
拓扑是组内通信域上的额外,可选属性,它不能附加在组间通信域(inter-communcator)上,拓扑能提供一种方便的命名机制,对于由特定拓扑要求的算法使用起来直接自然方便。
拓扑还可以辅助运行时系统,将进程映射到实际的硬件结构上。
笛卡尔拓扑
MPI 笛卡尔拓扑是一种二维矩形的结构,在这个结构中,每个进程都有一个唯一的坐标。这种拓扑结构通常用于实现多维分布式数组的通讯。
使用 MPI_Cart_create 函数可以创建 Cartesian 拓扑,并使用 MPI_Cart_shift 函数获取进程在对应维度上的相邻进程的 ran
函数原型
int MPI_Cart_create(MPI_Comm old_comm, int ndims,
const int dims[], const int periods[], int reorder,
MPI_Comm *comm_cart);
int MPI_Cart_shift(MPI_Comm comm, int direction, int displ,
int *rank_source, int *rank_dest)