问题 MPI中的关键部分?


我有一些代码将2D数组打印到标准输出。 问题是当我运行它时,每个进程都会写入输出并且数据重叠,使其无法使用。

如何在MPI中构建一个关键部分,以便一次只有一个进程进入我显示输出的部分?

我正在使用OpenMPI。


2022
2018-01-12 19:26


起源



答案:


使用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 ();
}

15
2018-01-12 19:29



你可能想要增加 rank 在某处。 :) - suszterpatt
嘿,谢谢。 太多了 伪代码不好;-) - jman
谢谢回复!它有点好但仍然重叠:( - alexsardan
那么,它似乎并没有正确地冲洗。也许你应该尝试写入不同的文件。每个等级都可以写入output_ $ rank.txt或类似的东西。 - jman
是的,这到底是我的解决方案。我输出了几个文件。非常感谢! - alexsardan


答案:


使用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 ();
}

15
2018-01-12 19:29



你可能想要增加 rank 在某处。 :) - suszterpatt
嘿,谢谢。 太多了 伪代码不好;-) - jman
谢谢回复!它有点好但仍然重叠:( - alexsardan
那么,它似乎并没有正确地冲洗。也许你应该尝试写入不同的文件。每个等级都可以写入output_ $ rank.txt或类似的东西。 - jman
是的,这到底是我的解决方案。我输出了几个文件。非常感谢! - alexsardan