the below information come from the website: http://vsl.cis.udel.edu/mpi-spin/
There are numerous sources for such nondeterminism in MPI programs: the execution steps from the processes may be interleaved differently in time; a receive statement using MPI_ANY_SOURCE
may select a message from a different source; a call to MPI_Waitany
may select a different request for completion; a message sent by a call to MPI_Send
may be buffered in one execution while in the other the sender is blocked until the message can be delivered synchronously. This nondeterminism makes effective testing and debugging of MPI programs extremely difficult and is one of the main reasons that many computational scientists are interested in formal verification methods, such as model checking.