An End-to-End AI Framework for Performance Prediction and Optimization in HPC Applications
| Level | Content | Status |
|---|---|---|
| level1/ | 50 standalone GPU benchmarks (independently buildable / runnable / validatable) | 50/50 working, CUDA-validated |
| level2/ | proxy applications / mini-apps | planned |
| level3/ | production / end-to-end HPC applications | planned |
Level 1 benchmarks are extracted (or faithfully ported) from six upstream suites -- HeCBench, RAJAPerf, NPB-GPU, Hetero-Mark, Rodinia, Kokkos Kernels -- as correctness-preserving, standalone, reproducible programs. Each benchmark records its upstream provenance (repository + commit), verified build/run commands, validation method, and measured LOC in its own README. See level1/README.md for the full catalog.
git clone https://github.com/Deep-Learning-Profiling-Tools/HPC-Performance-AI.git
cd HPC-Performance-AI
./setup_env.sh # one-time: installs the exact pinned toolchain (user-space only)
source hpcperf_env.sh # every shell: loads the environment
./check_env.sh # verify everything matches the validated configurationBuild, run, and validate a benchmark:
cmake -S level1/daxpy -B build/daxpy/cuda -DBACKEND=CUDA -DCMAKE_BUILD_TYPE=Release
cmake --build build/daxpy/cuda
ctest --test-dir build/daxpy/cuda --output-on-failureor everything at once from the repository root:
cmake -S . -B build/all -DBACKEND=CUDA -DCMAKE_BUILD_TYPE=Release
cmake --build build/all -jAll collaborators must follow the contribution workflow: create a
<scope>/<short-description>branch from the latestmainand open a pull request -- do not push development work directly tomain.
See CONTRIBUTING.md for branch naming and pull request guidelines.
The suite was validated with the following configuration. Everything in the
first table is installed automatically by ./setup_env.sh -- versions are
pinned exactly in environment.yml, so any clone reproduces
the same toolchain. Nothing is written outside the repository (no sudo, no
conda init, no changes to ~/.bashrc or conda base); if no conda exists on
the machine, setup bootstraps a project-local Miniforge into .tools/.
| Tool (auto-installed, pinned) | Version |
|---|---|
| GCC / G++ (conda, NVCC host compiler) | 13.3.0 |
| C++ standard | C++20 |
| CMake | 3.28.4 |
| Ninja | 1.13.2 |
| Python | 3.12.3 |
| numpy / scipy (used by validation scripts) | 2.5.2 / 1.18.0 |
cloc (downloaded into .tools/bin) |
2.06 |
The GPU stack is a system prerequisite (deliberately not managed by conda);
install it once per machine before running setup_env.sh:
| System prerequisite | Validated with | Notes |
|---|---|---|
| NVIDIA driver | 595.58.03 | any driver supporting CUDA 13 should work |
| CUDA Toolkit | 13.2 (nvcc 13.2.78) | expected at /usr/local/cuda; otherwise export CUDA_HOME=/path/to/cuda before sourcing hpcperf_env.sh. Other CUDA 13.x are expected to work but are untested |
| GPU | NVIDIA B200 (sm_100) | no architecture is hardcoded -- CMake uses native, so any CUDA-13-supported GPU builds for its own arch |
| OS | RHEL 10.0 (kernel 6.12) | any recent Linux x86_64 should work |
| Nsight Compute (optional) | 2026.1.1 | only needed for profiling |
| ROCm / hipcc (optional) | none available | HIP sources and build configs exist for 40 benchmarks but are unverified (no AMD GPU on the development machine) |
./check_env.sh prints exactly how the current machine compares against this
validated configuration.
A fresh git clone on any Linux x86_64 machine with the GPU prerequisites
above gets the same configuration this suite was validated with, via a
single command (./setup_env.sh). Concretely:
- Exact-version toolchain. Every user-space tool is pinned to the exact
validated version in environment.yml (GCC 13.3.0,
CMake 3.28.4, Ninja 1.13.2, Python 3.12.3, numpy 2.5.2, scipy 1.18.0,
pip 26.2.1, perl 5.32.1) plus cloc 2.06 pinned in
setup_env.sh-- not "latest", not floating ranges. - No assumptions about the machine. If conda is absent, setup bootstraps
a project-local Miniforge into
.tools/miniforge3; cloc ships with its own pinned perl; nothing requires sudo, environment modules, or pre-installed build tools. - Location-independent. All scripts derive the repository root from their
own location -- the clone can live at any path;
CUDA_HOMEis respected if the CUDA toolkit is not at/usr/local/cuda. - Fully self-contained and removable. Everything lands inside the clone
(
.conda_env/,.tools/); nothing touches$HOME, shell startup files, conda base, or the system. Deleting the clone removes every trace. - Checkable.
./check_env.shreports, item by item, how the current machine compares to the validated configuration.
This flow is verified end-to-end: a pristine copy of the repository in a fresh
directory ran setup_env.sh -> hpcperf_env.sh -> check_env.sh -> benchmark
build + ctest validation with no manual steps (2026-09-01, on the B200
development machine).
Boundary: the guarantee of identical versions covers the conda-managed
toolchain. The GPU stack (driver / CUDA toolkit / GPU model) is taken from the
host machine and is a prerequisite, not something this repository installs;
check_env.sh shows how the host's GPU stack differs from the validated one.
setup_env.sh-- one-time, idempotent: finds or bootstraps conda, creates the project-local env.conda_env/from the pinnedenvironment.yml, installs cloc, and compile+run-tests the GCC/NVCC pairing (recording the chosen host compiler in.tools/compiler_source).hpcperf_env.sh-- per-shell loader (must besourced): activates.conda_env, setsCC/CXX/CUDAHOSTCXX, puts the system CUDA onPATH/LD_LIBRARY_PATH, and setsCMAKE_GENERATOR=NinjaandCUDAARCHS=native. Safe to source repeatedly; works from any clone path.check_env.sh-- read-only report of the active environment vs. the validated configuration above.
Every Level 1 benchmark ships a correctness check, run via ctest: either the
upstream's built-in verification (e.g. NPB reference sums, HeCBench CPU
references) or an added independent reference (CPU re-computation, documented
per benchmark). "Working" in the catalog means configure + build + run +
validation all passed on the machine above.