【发布时间】:2011-08-19 13:52:15
【问题描述】:
我要解决的问题如下:
我在大型二维矩阵中计算的 C++ 串行代码。为了优化这个过程,我希望分割这个大的 2D 矩阵并使用 MPI 在 4 个节点(比如)上运行。节点之间发生的唯一通信是在每个时间步结束时共享边值。每个节点与其邻居共享边数组数据 A[i][j]。
基于对 MPI 的阅读,我有以下方案要实现。
if (myrank == 0)
{
for (i= 0 to x)
for (y= 0 to y)
{
C++ CODE IMPLEMENTATION
....
MPI_SEND(A[x][0], A[x][1], A[x][2], Destination= 1.....)
MPI_RECEIVE(B[0][0], B[0][1]......Sender = 1.....)
MPI_BARRIER
}
if (myrank == 1)
{
for (i = x+1 to xx)
for (y = 0 to y)
{
C++ CODE IMPLEMENTATION
....
MPI_SEND(B[x][0], B[x][1], B[x][2], Destination= 0.....)
MPI_RECEIVE(A[0][0], A[0][1]......Sender = 1.....)
MPI BARRIER
}
我想知道我的方法是否正确,并且希望对其他 MPI 功能的任何指导也能考虑实施。
谢谢, 阿什温。
【问题讨论】:
标签: c++ multidimensional-array 2d mpi