W. D. Gropp, "Runtime Checking of Datatype Signatures in MPI," Preprint ANL/MCS-P826-0500, May 2000. [pdf]
The MPI standard provides a way to send and receive complex combinations of datatypes (el.g., integers and doubles) with a single communication operation. The MPI standard specifies that the type signature, that is, the basic datatypes (language-defined types such as int or DOUBLE PRECISION), must match in communication operations such as send/receive or broadcast. Because datatypes may be defined by the user in MPI, there is a limitless collection of possible type signatures. Detecting the programmer error of mismatched datatypes is difficult in this case; detecting all errors essentially requires sending a complete description of the type signature with a message. This paper discusses an alternative: send the value of a function of the type signature so that (a) identical type signatures always give the same function value, (b) different type signatuares often give difference values, and (c) common cases (e.g., predefined datatypes) are handled exactly. Thus, erronneous programs are often (but not always) detected; correct prorams never are flagged as erroneous. The method described is relatively inexpensive to compuote and uses a small (and fixed, independent of the complexity of the datatype) amount of space in the message envelope.