【发布时间】:2011-05-17 00:34:44
【问题描述】:
我希望使用 MPI 在两个节点之间发送一个连续的内存数组。为此,我使用以下非阻塞发送/接收命令(MPI_Isend、MPI_Irecv)。在执行运行命令时,我看到两个警告语句如下:
Warning: Program exiting with outstanding receive requests
基本上,我想看到“NorthEdge1”中的数组数据被传递给“NorthofNorthEdge3”。我该如何解决这个问题?我还可以尝试检查此通信吗?
这里是源代码的摘录:
#define Rows 48
...
double *northedge1 = new double[Rows];
double *northofnorthedge3 = new double[Rows];
...
...
int main (int argc, char *argv[])
{
....
....
MPI_Request send_request, recv_request;
...
...
{
MPI_Isend(northedge1, Rows, MPI_DOUBLE, my_rank+1, 0, MPI_COMM_WORLD, &send_request);
MPI_Irecv(northofnorthedge3, Rows, MPI_DOUBLE, my_rank+1, MPI_ANY_TAG, MPI_COMM_WORLD,
&recv_request);
}
【问题讨论】: