【问题标题】:MPI Warning: Program exiting with outstanding receive requestsMPI 警告:程序因未完成的接收请求而退出
【发布时间】: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); 
 }

【问题讨论】:

    标签: c++ warnings mpi


    【解决方案1】:

    您似乎没有致电MPI_Waitall()。 “立即”发送和接收例程仅开始通信。您必须阻止您的进程以确保通信已完成。 MPI 中的阻塞是MPI_Wait() 的变体;在你的情况下,你需要MPI_Waitall()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多