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 18 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. It is erroneous to bind a control variable, performance variable, or event to a handle that would not be valid to use as an input argument to another MPI call (excluding calls to the MPI Tool Information Interface) at the same point of execution.
Table 18: Constants to identify associations of variables
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 |
MPI_T_BIND_MPI_SESSION | MPI session object |
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.)