Generating Grain Graphs Using the OpenMP Tools API
Abstract
Computers are becoming increasingly parallel. Many applications rely on OpenMP to divide units of work between a set of worker threads. Typically, this is done using parallel for-loops or tasking. Grain graphs is a recent method for visualizing program execution from a program perspective. It shows the control flow of a program in terms of fork and join points. Between such points, one can find grains, which are task instances or for-loop chunks. Attached to these grains are a set of metrics that inform the programmer of how they well they perform.
However, generating grain graphs means using the MIR runtime system, as it is the only one designed to provide all the needed metrics. In this paper, I look at the OpenMP Tools API as an alternative. I show what data can be immediately obtained from the interface. Furthermore, I look at whether any metrics require extensions to OMPT. I find that most task-related metrics are available, but that information about for-loop chunks is missing from the API. I propose that an event for chunk scheduling is introduced, as well as an event denoting the end of task creation.