首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPI_Wait中的致命错误

MPI_Wait中的致命错误
EN

Stack Overflow用户
提问于 2011-05-18 01:50:01
回答 1查看 4K关注 0票数 1

下面是一个源代码实现的输出,如下所示。我不确定它是什么意思,也不知道我应该如何修复代码。

代码语言:javascript
复制
 aborting job:
 Fatal error in MPI_Wait: Invalid MPI_Request, error stack:
 MPI_Wait(139): MPI_Wait(request=0xffffd6a4, status0xffffd690) failed
 MPI_Wait(75) : Invalid MPI_Request
 rank 0 in job 1 <processor #) caused collective abort of all ranks
 exit status of rank 0: return code 13

源代码:

代码语言:javascript
复制
 #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;
  ...
  ...


  if ((my_rank) == 1)
  {
  MPI_Isend(northedge1, Rows, MPI_DOUBLE, my_rank+2, 0, MPI_COMM_WORLD, &send_request); 
  }

  if ((my_rank) == 3)
  {
  MPI_Irecv(northofnorthedge3, Rows, MPI_DOUBLE, my_rank-2, MPI_ANY_TAG, MPI_COMM_WORLD,   
  &send_request);
  }


  MPI_Wait(&send_request, &status);
  .....
  MPI_Finalize ()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 04:41:11

它看起来像是从0级调用MPI_Wait(),即使你只在1级和3级进行非阻塞通信,所以0级没有有效的send_request,所以MPI_Wait是无效的。在上面的代码中,看起来你应该有

代码语言:javascript
复制
 if ( (my_rank == 1) || (my_rank == 3))   
      MPI_Wait(&send_request, &status);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6034943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档