1

帮助!

我正在运行我的 MPI 代码并返回“一个进程严重终止:清理...进程管理器错误等待完成”的运行时错误,我想弄清楚错误进程的数量以及如何?

更重要的是,使用4X4(4台机器每台使用4个进程)可以正常,但是如果我使用4X6或更多(4X8),则会出现错误。

我的减少代码如下:

#include <stdio.h>
int main(void)
{
   int num,rank;
   scanf("%d %d",&num, &rank);
   int depth = 1;
   int flag = 0;
   while(num > 1) {
      if(rank < num){
          flag = num % 2;
          if(rank % 2 != 0){
              //MPI_Send(to (rank-1)*depth);
              printf("Send to %d\n", (rank - 1) * depth);
              rank *= num;
              break;
          }
          else{
              if(!(flag && (rank == (num - 1)))) {
                  //MPI_Recv(from (rank+1)*depth);
                  printf("Recv from %d\n", (rank+1)*depth);
              }
              rank /= 2;
          }
          depth *= 2;
      }
      num = num / 2 + flag;
  }
  return 0;
}

谢谢!

4

1 回答 1

0

如果问题与某些 MPI 错误有关,例如您尝试向不存在的排名发送消息,您应该使用MPI_Comm_create_errhandler. 在这里您可以打印产生错误的等级数。不过,您必须在调试器中运行代码才能解决问题。

于 2012-04-17T05:32:21.253 回答