Tool interfaces (MPI-T), MPICH parameters and instrumentation
This page describes the design of the MPI Tool (MPI-T) Information Interfaces in MPI-3. MPI-T provides a set of interfaces for users to list, query, read and possibly write variables internal to an MPI implementation. Each such variable represents a particular property, setting or performance measurement from within the MPI implementation. MPI-T classifies the variables into two parts: control variables (cvar) and performance variables (pvar). Control variables correspond to the current MPICH parameters, through which MPICH tunes its configuration. Performance variables correspond to the current MPICH internal instrumentation variables, through which MPICH understands its performance.
We wish to have a framework through which components of MPICH can add their parameters and instrumentation uniformly. We need make it easy to expose variables to MPI-T interfaces and make it efficient to access variables through MPI-T interfaces.
Current MPICH Parameter Implementation
An out-of-date document Parameters_in_MPICH describes requirements and a potential design of MPICH parameters. Unfortunately, the current MPICH code doesn't follow this design. Currently, all MPICH parameters are declared in mpich/src/util/param/params.yml in a markup language, which then is parsed and the results are dumped into two files: mpich_param_vals.h/c. The main data structure is a static array MPIR_Param_params, which is initialized to hold info for each parameter, such as its name, data type and a pointer to the parameter.