I have a little program which initializes, calls MPI_Bcast, prints a message, waits five seconds, and finalized. I sure thought that each participating process would print the message immediately, then all would wait and exit - thats what happens with mvapich 1.0.0. On OpenMPI 1.2.5, though, I get the message immediately from proc 0, then 5 seconds later, from proc 1, and then 5 seconds later, it exits- as if MPI_Finalize on proc 0 flushed the MPI_Bcast. If I add a MPI_Barrier after the MPI_Bcast, it works as I'd expect. Is this behavior correct? If so, I so I have a bunch of code to change in order to work correctly on OpenMPI.
Here's the code:
main(int argc, char *argv)
char hostname; int r, s;
fprintf(stderr, "%d of %d: %s\n", r, s, hostname);
int i = 99999;
MPI_Bcast(&i, sizeof(i), MPI_UNSIGNED_CHAR, 0, MPI_COMM_WORLD);
fprintf(stderr, "%d: got it\n", r);