Проблема с printf
От: Aleх  
Дата: 24.12.09 19:39
Оценка:
Я пишу программу для кластера. При этом использую библиотеку 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); 
  }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.