2012-01-12 80 views
10

我有一些代码可以将二维数组打印到标准输出。 问题是,当我运行它时,每个进程都会写入输出,并且数据发生重叠,导致其不可用。MPI中的关键部分?

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

我正在使用OpenMPI。

回答

14

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

你可能想在某处增加'rank'。 :) – suszterpatt 2012-01-12 19:45:09

+0

嘿,谢谢。 _Too much_伪代码不好;-) – jman 2012-01-12 19:55:34

+0

感谢您的回复!它有点更好,但仍然重叠:( – alexsardan 2012-01-12 21:42:18