我在带有MPIICC编译器的Xeon Phi协处理器上运行了一个MPI程序。
我的代码运行正常,直到我完成MPI并尝试将结果打印到文件。
我将首先描述最终定稿:
MPI_Win_free(&win);
MPI_Finalize();
// After finalizing, all print statements in this area of
// the code print for all MPI nodes (even though they have
// been finalized)
printf("testing\n");
return 0;
}
最终printf
语句打印所有MPI节点,即使它们已经完成。
所以,好吧,奇怪的行为 - 我不在乎。我放了一个if语句,只有当rank等于0时才打印结果:
if (rank == 0) {...}
即使在最终确定之后,这仍然有效。接下来,我将print语句更改为文件写入语句:
...
MPI_Finalize();
if (rank == 0){
FILE *file = fopen("output.txt","w");
fclose(file);
}
return 0;
}
我遇到了分段错误。我无法弄清楚发生了什么。我环顾四周,尝试了一切......不确定发生了什么,甚至可能出现什么问题。我应该拥有所有必需的权限。
补充说明:如果我不关闭文件,我不会出现分段错误(或打印到它)。
这似乎一般都失败了。