We know that the different summation order of floating-point numbers could lead to the different results.
Consider the MPI function MPI_reduce called with the MPI_SUM operation.
#include <mpi.h>
int MPI_Reduce(const void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, int root,
MPI_Comm comm)
Is it guaranteed by the MPI standard or MPI implementations that every time we run the function with the same input and output data, the results will be the same?
That's what I found in the documentation
The ‘‘canonical’’ evaluation order of a reduction is determined by the ranks of the processes in the group. However, the implementation can take advantage of associativity, or associativity and commutativity, in order to change the order of evaluation.
But this does not give any insight on the repeatability.
The actual standard gives some further insight:
So, while there is no guarantee, I would expect that implementations follow this recommendation and do produce reproducible results.