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
|
Is
|
global |
declared by
the MEITrace{...} enum in trace.h. |
object-specific
(for MPI objects) |
declared in stdmei.h. |
object-specific
(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:
- 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.
- 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 ...
|