Trace Masks

Every MPI object contains an MEITraceMask and every process contains a single global MEITraceMask. An MEITraceMask consists of bits, where each bit corresponds to a single trace category. A trace category is a specific type of debug information that you want to be displayed by the MPI library. A trace category can be either global (applying to all MPI objects) or object-specific (applying only to a specific MPI object).

Trace Category
global declared by the MEITrace{...} enum in trace.h.
(for MPI objects)
declared in stdmei.h.
(for MEI objects)
declared in the object header file (for MEI objects). Note that the trace mask bits for object-specific trace categories overlap.

An object will produce trace output for a trace category when the logical OR of the global trace mask and the object's trace mask has the bit set that corresponds to the trace category.

If the global trace mask has all of its bits set, then all objects will display trace output for all trace categories.

If an object's trace mask has all of its bits set, then that object will display trace output for all trace categories, but a different object of the same type might produce less or no trace output depending on the setting of its trace mask. The setting of the global and object trace masks is under the control of your application.

The trace mask is derived in 2 steps:

    1. The global trace mask is logically ORed with the object trace mask. This yields the current trace mask, representing the desired trace output types as specified by the application.
    2. The current trace mask (from step1) is logically ANDed with a library-defined trace mask (that describes the trace output types for which the trace macro should produce output). If the result of the AND is non-zero, trace output will be produced using the format and the args [from meiTrace#(mask, format, arg ...