One of the main reasons for having a standard is that a code written using one MPI implementation should be able to use another implementation without any source code changes. There are several test suites that can automatically find problems in an MPI implementation. These include a test suite from IBM [4], a test suite from Intel [5], and test codes distributed with MPICH [6], which is described in Section 4.
In the implementations surveyed for this study, there are few problems with MPI compliance. The problems are relatively minor and often have their origins in the behavior of earlier versions of MPICH, from which many implementations are derived. The two most common problems are:
include 'mpif.h'
integer mytype
parameter (mytype=MPI_REAL)
In some implementations, however, many MPI ``constants'' are actually
the names of variables in common blocks and aren't initialized until
MPI_Init has been called. Note that this behavior was compliant
with version 1.0 of MPI, and that MPI 1.1 invalidated some formerly
compliant implementations (though all compliant MPI applications
remained compliant). However, MPI 1.1 has been been out for more than
two years, and new vendor implementations continue to contain this
bug.