MPI笛卡尔拓扑中沿着方向的集体通信

时间:2016-07-27 09:12:25

标签: mpi communication hpc

nx ny nz个进程的{strong> 3D笛卡尔拓扑。 有数学计算只涉及处理器的“铅笔”。如果333个流程矩阵排列,从026,则流程4涉及三个流程操作:

  1. 第一个方向的流程1322
  2. 第二个方向的流程17
  3. 第三方向的流程35
  4. 数学运算需要属于同一支铅笔的进程之间的点对点和集体通信。

    对于点对点通信的问题,我使用MPI_CART_SHIFT让每个进程知道相邻进程的排名。 (然后我将使用MPI_SENDRECV。)

    关于集体通信的问题,如何进行此类通信? 我认为解决方案可能是定义“铅笔”通信器,其数量为nx*ny + nx*nz + ny*nz(所需的通信器数量相对于进程数量渐近地小,因为每个方向的进程数量增加)

    这是唯一的方法吗?是否没有依靠笛卡尔传播者进行这种集体交流的标准子程序?

1 个答案:

答案 0 :(得分:5)

邻居集体实际上是唯一可以直接利用笛卡尔拓扑连接信息的例程。但是,他们会以同样的方式对待所有方向(x,y,z),因此对你的铅笔方案没有帮助。

我认为唯一的方法是按照你的建议,即构建一套完整的铅笔传播者。请注意,通过在笛卡尔通信器上调用MPI_Cart_sub,MPI确实为您提供了一种简单的方法。一旦你构建了铅笔通信器,那么你也可以选择在铅笔上使用邻居集体,而不是点对点,但对于一维通信器,不清楚这对于手工计算邻居有很多好处。目前做的。

相关问题