我正在尝试在MPI中动态构建以下模型,
从上面的矩阵图中可以看出,每个进程正在从其邻居发送和接收数据。
我想在MPI代码中实现相同的示例。
这是图像中发生的事情,
进程0:
发送到流程1
从流程1接收
发送到处理3
从流程3接收
过程1:
发送到流程2
从流程2接收
发送到进程0
从流程0接收
发送到流程4
从流程4接收
所有其他人的通信方式与图片中所述的相同。
我想建立一个逻辑,其中每个进程可以动态传输数据并与其他进程进行对话。 就像我们在图像中看到的一样,所有偶数进程正在与2个其他进程通信(进程4除了正在与4个其他进程进行通信),而所有奇数进程都在与另外3个进程进行通信。
我计算出是否对偶数个进程(myrank + size + 1)%size应用了此公式(此处我们可以使用+1进行正向通信,使用-1进行反向通信)和(myrank + size + 3) %size(这里我们可以使用+3进行底部通讯,使用-3进行向上通讯),那么它可以返回正确的进程,但进程号4除外,对于该进程,我们可以使用另一个if块。 但是我该如何在这些进程之间构造if块。
我很困惑,被困在这里。语言无关紧要,我只希望它们如何通信以及如何向邻居发送和接收其值的算法和逻辑。