Are MPI programs truly portable?
Well, yes and no. All conformant MPI programs will compile with any conformant MPI implementation. That is, if you write a correct MPI program, it should compile just about anywhere (most [if not all] major MPI implementations have the correct MPI API), so cross-compilation — in terms of MPI calls — is not much of an issue. Indeed, we have “ported” several large scale MPI programs to multiple architectures with different MPI implementations without much trouble. The catch is that every MPI implementation is not created equal. The MPI standard was written with some very specific points, and some very loose points — most of which were on purpose. That is, the standard does leave some leeway for the implementor to choose exactly what (and how) specific actions are to be performed. So even though your program will most likely compile under all existing MPI implementations, it may work slightly differently with different implementations. This is not a major concern, but it is something t