Grain graphs: OpenMP performance analysis made easy

Abstract

Average programmers struggle to solve performance problems in OpenMP programs with tasks and parallel for-loops. Existing performance analysis tools visualize OpenMP task performance from the runtime system's perspective where task execution is interleaved with other tasks in an unpredictable order. Problems with OpenMP parallel for-loops are similarly difficult to resolve since tools only visualize aggregate thread-level statistics such as load imbalance without zooming into a per-chunk granularity. The runtime system/threads oriented visualization provides poor support for understanding problems with task and chunk execution time, parallelism, and memory hierarchy utilization, forcing average programmers to rely on experts or use tedious trial-and-error tuning methods for performance. We present <i>grain graphs</i>, a new OpenMP performance analysis method that visualizes <i>grains</i> -- computation performed by a task or a parallel for-loop chunk instance -- and highlights problems such as low parallelism, work inflation and poor parallelization benefit at the grain level. We demonstrate that grain graphs can quickly reveal performance problems that are difficult to detect and characterize in fine detail using existing visualizations in standard OpenMP programs, simplifying OpenMP performance analysis. This enables average programmers to make portable optimizations for poor performing OpenMP programs, reducing pressure on experts and removing the need for tedious trial-and-error tuning.

DOI: 10.1145/2851141.2851156

Extracted Key Phrases

12 Figures and Tables

Cite this paper

@inproceedings{Muddukrishna2016GrainGO, title={Grain graphs: OpenMP performance analysis made easy}, author={Ananya Muddukrishna and Peter A. Jonsson and Artur Podobas and Mats Brorsson}, booktitle={PPOPP}, year={2016} }