Each MPI tool information interface variable provides access to a particular control setting or performance property of the MPI implementation. A variable may refer to a specific MPI object such as a communicator, datatype, or one-sided communication window, or the variable may refer more generally to the MPI environment of the process. Except for the last case, the variable must be bound to exactly one MPI object before it can be used. Table 13 lists all MPI object types to which an MPI tool information interface variable can be bound, together with the matching constant that MPI tool information interface routines return to identify the object type.
Constant | MPI object |
MPI_T_BIND_NO_OBJECT | N/A; applies globally to entire MPI process |
MPI_T_BIND_MPI_COMM | MPI communicators |
MPI_T_BIND_MPI_DATATYPE | MPI datatypes |
MPI_T_BIND_MPI_ERRHANDLER | MPI error handlers |
MPI_T_BIND_MPI_FILE | MPI file handles |
MPI_T_BIND_MPI_GROUP | MPI groups |
MPI_T_BIND_MPI_OP | MPI reduction operators |
MPI_T_BIND_MPI_REQUEST | MPI requests |
MPI_T_BIND_MPI_WIN | MPI windows for one-sided communication |
MPI_T_BIND_MPI_MESSAGE | MPI message object |
MPI_T_BIND_MPI_INFO | MPI info object |
Rationale.
Some variables have meanings tied to a specific MPI
object. Examples include the number of send or receive operations
that use a particular datatype, the number of times a particular error handler has been
called, or the communication protocol and ``eager limit'' used for
a particular communicator. Creating a new MPI tool information interface
variable for each
MPI object would cause the number
of variables to grow without bound, since they cannot be reused to
avoid naming conflicts. By associating MPI tool information interface
variables with a
specific MPI object, the MPI implementation only must specify and
maintain a single variable, which can then be applied to as
many MPI objects of the respective type as created during the
program's execution.
( End of rationale.)