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.