326. Miscellaneous Control of Profiling

PreviousUpNext
Up: Profiling Interface Next: Profiler Implementation Example Previous: Logic of the Design

There is a clear requirement for the user code to be able to control the profiler dynamically at run time. This capability is normally used for (at least) the purposes of


These requirements are met by use of MPI_PCONTROL.

MPI_PCONTROL(level, ...)
IN levelProfiling level (integer)
int MPI_Pcontrol(const int level, ...)
MPI_Pcontrol(level)
INTEGER, INTENT(IN) :: level
MPI_PCONTROL(LEVEL)
INTEGER LEVEL

MPI libraries themselves make no use of this routine, and simply return immediately to the user code. However the presence of calls to this routine allows a profiling package to be explicitly called by the user.

Since MPI has no control of the implementation of the profiling code, we are unable to specify precisely the semantics that will be provided by calls to MPI_PCONTROL. This vagueness extends to the number of arguments to the function, and their datatypes.

However to provide some level of portability of user codes to different profiling libraries, we request the following meanings for certain values of level.


We also request that the default state after MPI_INIT has been called is for profiling to be enabled at the normal default level. (i.e., as if MPI_PCONTROL had just been called with the argument 1). This allows users to link with a profiling library and to obtain profile output without having to modify their source code at all.

The provision of MPI_PCONTROL as a no-op in the standard MPI library supports the collection of more detailed profiling information with source code that can still link against the standard MPI library.


PreviousUpNext
Up: Profiling Interface Next: Profiler Implementation Example Previous: Logic of the Design


Return to MPI-3.1 Standard Index
Return to MPI Forum Home Page

(Unofficial) MPI-3.1 of June 4, 2015
HTML Generated on June 4, 2015