next up previous
Next: Unspecified Behavior. Up: Review Criteria Previous: Review Criteria


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:

  1. Several implementations do not provide an MPI_Cancel that meets the MPI specification. This function can be quite difficult to implement for anything other than unmatched receives. Indeed, a significant fraction of the MPI community believes that it was a mistake for MPI to require that this function apply to sends as well, and that applications requiring the ability to cancel sends are quite rare. In the opinion of this reviewer, therefore, not fully implementing MPI_Cancel is a small problem.
  2. Several implementations do not correctly implement MPI constants in Fortran. In particular, MPI 1.1 requires that they be usable in initialization expressions. For example, the following code should work.
         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.

Jack Dongarra
Sun Nov 9 14:03:51 EST 1997