openmp-energy-eval
Energy-Efficiency Evaluation of OpenMP Loop Transformations and Runtime Constructs — Valter et al. (2022) (arXiv:2209.04317, 2022)
What this evaluates
Evaluates the energy efficiency and performance of OpenMP loop transformations (tiling, unrolling) and parallel constructs across different compilers and workloads.
Datasets
- Matrix Multiplication — total ?; splits: test (-1)
- 2D Stencil — total ?; splits: test (-1)
- Barcelona OpenMP Task Suite (BOTS) — total ?; splits: test (-1)
- NAS Parallel Benchmarks — total ?; splits: test (-1)
- PARSEC benchmark — total ?; splits: test (-1)
Metrics
Energy (J)(primary) — range: other- Total energy consumption in Joules, calculated as the product of average power draw and execution time. Often reported relative to a baseline configuration.
Execution Time (s)— range: other- Wall-clock time in seconds to complete the benchmark run.
Power (W)— range: other- Average power consumption in Watts during execution.
Input / output format
Input: C/C++ source code annotated with OpenMP directives, compiled with GCC, Clang, or ICC, and executed on a data center server.
Output: Absolute and relative values for execution time (s), power (W), and energy (J).
Scoring recipe
def calculate_energy(time_s, power_w):
return time_s * power_w
def calculate_relative_energy(config_energy, baseline_energy):
return config_energy / baseline_energy
Common pitfalls
- Compiler implementation heavily influences results; a transformation beneficial for GCC/Clang may degrade ICC.
- Relative metrics can obscure absolute performance differences, especially when baselines vary widely.
- Energy and execution time are highly correlated, making dual reporting redundant.
Evidence (verbatim from paper)
In general, we present metrics (energy, execution time and power) either in absolute numbers or relative to some baseline. Use of relative numbers is useful when the differences between configurations is very small, which is often the case for example in unrolling. When plotting data, we often show only the energy consumption and not execution time. This is because the two quantities are almost always proportional to one another, which makes showing both redundant.
Citation
@misc{valter2022energy,
title={Energy-Efficiency Evaluation of OpenMP Loop Transformations and Runtime Constructs},
author={Valter et al. (2022)},
year={2022},
note={arXiv:2209.04317}
}
- arXiv: 2209.04317