Критический раздел в MPI?

У меня есть код для печати 2D-массива на стандартный вывод. Проблема в том, что когда я запускаю его, каждый процесс записывает на выходе и перекрывает данные, делая его непригодным.

Как создать критический раздел в MPI, чтобы только один процесс заходил в раздел, где я показываю вывод?

Я использую OpenMPI.

Ответ 1

Отделите его, используя 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 ();
}