Я пишу программу для кластера. При этом использую библиотеку
MPI
С целью отладки программы я вывожу данные в поток.
Мне нужно, чтобы они выводились в некотором частично определенном порядке. Для этого соответственно можно использовать различные блокирующие комманды из библиотеки MPI.
Вообще, для синхронизации процессов есть комманда MPI_Barrier.
Но к сожалению, данные выводятся совершенно хаотичной. Абсолютно беспорядочно, несмотря ни на какие синхронизации. Поэтому я подозреваю, что проблема в printf. Думал, может он как то буфферезует вывод, и поэтому выводит непоследовательно. Поэтому я использовал функцию fflush после каждого printf. Но она не дала никакого положительного эффекта.
У кого какие идеи, в чем может быть проблема?
Код примерно такой:
MPI_Comm_rank ( MPI_COMM_WORLD, &ProcRank ); // Определения ранга процесса
MPI_Comm_size ( MPI_COMM_WORLD, &ProcNum ); // Определение количества процессов в выполняемой параллельной программе
const int testCount = 5;
for(int i = 0; i < testCount ; ++i)
{
MPI_Barrier(MPI_COMM_WORLD);
printf("%d %d \n", i, ProcRank); fflush(stdout);
}