Problemas com o OpenMPI MPI_Barrier

Estou tendo alguns problemas de sincronização usando a implementação OpenMPI do MPI_Barrier:

int rank;
int nprocs;

int rc = MPI_Init(&argc, &argv);

if(rc != MPI_SUCCESS) {
    fprintf(stderr, "Unable to set up MPI");
    MPI_Abort(MPI_COMM_WORLD, rc);
}

MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);


printf("P%d\n", rank);
fflush(stdout);

MPI_Barrier(MPI_COMM_WORLD);

printf("P%d again\n", rank);

MPI_Finalize();

para mpirun -n 2 ./a.out

a saída deve ser: P0 P1 ...

saída éas vezes: P0 P0 novamente P1 P1 novamente

o que está acontecendo?

questionAnswers(3)

yourAnswerToTheQuestion