【发布时间】:2016-12-01 05:00:31
【问题描述】:
我有一个nx by ny by nz 进程的3D 笛卡尔拓扑。
有一些数学计算同时只涉及处理器的“铅笔”。对于3 by 3 by 3 的进程矩阵,从0 到26,进程4 涉及三个操作:
- 沿第一个方向处理
13和22 - 沿第二个方向处理
1和7 - 进程
3和5沿第三方向
数学运算需要属于同一支铅笔的进程之间的点对点和集体通信。
对于点对点通信的问题,我使用MPI_CART_SHIFT 让每个进程都知道相邻进程的等级。 (那我就用MPI_SENDRECV。)
对于集体沟通,如何进行此类沟通?
我认为一个解决方案可能是定义“铅笔”通信器,其数量为nx*ny + nx*nz + ny*nz(随着每个方向的进程数增加,所需的通信器数量相对于进程数是渐近的)。
这是唯一的方法吗?是否没有标准的子程序依赖笛卡尔通信器来执行这种集体通信?
【问题讨论】:
标签: mpi communication hpc