帮助!
我正在运行我的MPI代码并返回运行时错误“一个进程暂停: CLEANING UP ...等待完成的进程管理器错误“,我想弄清楚错误进程的数量以及如何进行?
更重要的是,使用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;
}
谢谢!
答案 0 :(得分:0)
如果问题与某些MPI错误有关,例如您尝试将消息发送到不存在的行,您应该使用MPI_Comm_create_errhandler
创建自己的MPI错误处理程序。在这里,您可以打印产生错误的等级编号。不过,您必须在调试器中运行代码才能解决问题。