OpenMP and the OMPD API
The OpenMP (Open Multi-Processing) standard provides a parallel programming API for defining multi-threaded, shared-memory programs. OpenMP consists of a series of compiler directives, library routines, and environment variables that configure runtime behavior.
For more detail on OpenMP itself, see the
OpenMP specification.
The OpenMP Debugging API (
OMPD v5.0) is an innovative new interface that allows third-party tools, such as debuggers, to extract the execution state of an OpenMP (OMP) runtime library, including live processes and core files. OMPD was added to the
OpenMP 5.0 specification, dated November 2018.
OMPD allows the TotalView debugger, or other similar third-party tools, to extract information about OpenMP objects such as threads, parallel and task regions, internal control variables, parent/child thread relationships, and runtime call-stack boundaries.
TotalView provides an OpenMP view in the UI that displays OpenMP control variables, threads, and parallel and task regions. The Call Stack view can be filtered to hide internal OpenMP runtime frames and make it easier to peruse the stack and relevant #pragma directive frames. It also displays information on implicit and explicit task regions.