# Openmp Energy Eval

> Evaluates the energy efficiency and performance of OpenMP loop transformations (tiling, unrolling) and parallel constructs across different compilers and workloads. Use when the user wants to benchmark on Matrix Multiplication, 2D Stencil, Barcelona OpenMP Task Suite (BOTS), NAS Parallel Benchmarks, PARSEC benchmark, or asks about evaluating this task. Reports Energy (J).

- Skill: `qhjqhj00/openmp-energy-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/openmp-energy-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/openmp-energy-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/openmp-energy-eval

---


# 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

```python
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

```bibtex
@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

