Критический раздел в MPI? - PullRequest
11 голосов
/ 12 января 2012

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

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

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

1 Ответ

17 голосов
/ 12 января 2012

Отделите его с помощью 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 ();
}
...