【问题标题】:Collective communications along directions in MPI cartesian topologyMPI笛卡尔拓扑中沿方向的集体通信
【发布时间】:2016-12-01 05:00:31
【问题描述】:

我有一个nx by ny by nz 进程的3D 笛卡尔拓扑。 有一些数学计算同时只涉及处理器的“铅笔”。对于3 by 3 by 3 的进程矩阵,从026,进程4 涉及三个操作:

  1. 沿第一个方向处理1322
  2. 沿第二个方向处理17
  3. 进程35 沿第三方向

数学运算需要属于同一支铅笔的进程之间的点对点和集体通信。

对于点对点通信的问题,我使用MPI_CART_SHIFT 让每个进程都知道相邻进程的等级。 (那我就用MPI_SENDRECV。)

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

这是唯一的方法吗?是否没有标准的子程序依赖笛卡尔通信器来执行这种集体通信?

【问题讨论】:

    标签: mpi communication hpc


    【解决方案1】:

    邻域集合确实是唯一可以直接利用笛卡尔拓扑连接信息的例程。但是,他们会以相同的方式处理所有方向(x、y、z),因此对您的铅笔方案没有帮助。

    我认为这样做的唯一方法是按照您的建议,即构建一套完整的铅笔通信器。请注意,通过在笛卡尔通信器上调用 MPI_Cart_sub,MPI 确实为您提供了一种简单的方法。一旦您构建了铅笔通信器,那么您还可以选择在铅笔上使用邻域集合而不是点对点,但是对于 1D 通信器,不清楚这对于手动计算邻居是否有很多优势。目前做。

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2018-03-10
      • 2012-03-17
      • 2017-12-17
      • 2017-12-18
      • 2016-02-05
      • 1970-01-01
      • 2017-08-22
      • 2014-07-23
      相关资源
      最近更新 更多