# Perf Check

> Run the rocDecode performance test and compare to baseline to catch regressions

- Skill: `rocm/perf-check` (Agent Skill)
- Install (CLI): `npx skillmds@latest add rocm/perf-check`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rocm/perf-check/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: rocm (https://skillmd.com/u/rocm)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rocm/perf-check

---


Run the rocDecode performance regression check: measure decode FPS and compare it against
the GPU-specific baseline. Execute the steps in order, stopping only if a step fails. Run
from the rocDecode project root (the directory containing `build/`, `samples/`, and
`test/`).

IMPORTANT: Run each command as a SEPARATE Bash tool call. Do not chain commands with && or |.

The GPU is detected automatically (via `amd-smi`/`rocm-smi`/KFD) and mapped to the matching
column in the baseline (`MI250X`, `MI300X`, `MI300A`, `MI350`, `MI355`, `Navi31`, `Navi48`).
Override with `ROCDECODE_PERF_GPU=<column>` if detection is wrong.

Perf streams and the baseline file are located via `ROCDECODE_PERF_DIR` (default
`$HOME/rocDecodePerformance`). That directory must contain the per-codec stream
subdirectories `AvcPerformance`, `Av1Performance`, `HevcPerformance`, `Vp9Performance`, and
the baseline `rocDecode_perf_baseline.html` (download it from SharePoint first). The
regression threshold is 5% Avg FPS drop, overridable via `ROCDECODE_PERF_TOLERANCE`.

## Step 1 — Verify the ROCm toolchain

Run: `test/perf_regression.py --check-rocm`

Confirms `ROCM_PATH` points at a usable ROCm install (default `/opt/rocm`). If it fails,
set `ROCM_PATH` — in `~/.profile`, since skills run cmake in a non-interactive shell that
does not source `~/.bashrc` — and re-run before continuing.

## Step 2 — Build the performance sample

Each sample builds in its own directory. Run these two commands separately:

1. `cmake -S samples/videoDecodePerf -B samples/videoDecodePerf/build`
2. `cmake --build samples/videoDecodePerf/build`

This requires rocDecode to be installed already (`make install`); run the `/validate` skill
first if you have not built and installed the library this session.

## Step 3 — Run the regression check

Run: `test/perf_regression.py`

If the skill was invoked with a `quick` argument (e.g. `/perf-check quick`), run the fast
variant instead — `test/perf_regression.py --quick` — which measures one stream per leaf
subfolder capped at ≤4K (the 8K streams dominate runtime, so they are skipped) instead of
every stream. Use it for a fast sanity check; use the full run before finalizing. Each run
prints its own elapsed time.

Streams within tolerance pass on a single run; streams that appear to regress are
re-measured (3-run average) to rule out noise before being reported.

Report the final summary box from perf_regression.py to the user, and list any streams
marked REGRESSED (with their measured vs. baseline FPS and delta%).

