2012-01-12 3 views
10

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

Возможно, вы захотите увеличить «ранг» там где-то. :) – suszterpatt

+0

Хех, спасибо. _Too much_ псевдо код не хорош ;-) – jman

+0

Спасибо за ответ! Это немного лучше, но все еще перекрывается :( – alexsardan