我有一些代码可以将2D数组打印到标准输出。 问题是,当我运行它时,每个进程都会写入输出并且数据重叠,使其无法使用。
如何在MPI中构建一个关键部分,以便一次只有一个进程进入我显示输出的部分?
我正在使用OpenMPI。
答案 0 :(得分:17)
使用MPI_Barriers将其分开。
rank = 0;
while (rank < total_processes) {
if (myrank == rank) {
printf ("Array printed by rank: %d\n", myrank);
print_array();
fflush (stdout);
}
rank ++;
MPI_Barrier ();
}