Skip to content

About

Benchmark campaign for tlinalg-rs: results keyed by commit x hardware profile

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

62 Commits

Folders and files

Repository files navigation

tlinalg-benchmark

The benchmark campaign for tlinalg-rs: results keyed by library commit × hardware profile, with the staleness of every cell visible rather than implied. It is the same shape as tprims-benchmark, which owns the same job for tprims-rs.

Latest results result/INDEX.md — generated table of contents over the per-revision pages
Result layout docs/results.md
Timing policy docs/timing-policy.md
Reference revision pins/tlinalg-rs.rev — what status is measured against
Design record docs/worklog.md — decisions, fixed failures, open items

How it works

The harness lives in tlinalg-rs (crates/tlinalg-bench, binary tlbench) and is built out of the same checkout as the library it measures, into a target directory keyed by that commit. A harness built from this repository could silently measure a different revision of the library than the one it was written against; building it in place makes the recorded commit describe both.

./scripts/setup_extern_deps.sh                     # clone tlinalg-rs at pins/tlinalg-rs.rev
./scripts/setup_extern_deps.sh /path/to/checkout   # or symlink a local checkout

# record one cell: for one vendor arm, build, verify, measure, validate, publish, reindex.
# One binary links one vendor library, so an arm is a run of its own.
python3 scripts/record_run.py zen5-cpu tlinalg-kernels --vendor openblas
python3 scripts/record_run.py zen5-cpu tlinalg-kernels --vendor mkl

The comparison is between the two providers of the interface — the faer-backed tlinalg and the LAPACK/BLAS-backed tlinalg-blas — with the vendor library named and its own thread budget set and read back, because a row labelled 1T is only a single-thread measurement if the vendor library also ran on one thread. OpenBLAS and Intel MKL are the two vendor arms; each is its own build and its own run, because a single dynamic MKL and a static OpenBLAS cannot share a process, and each page therefore carries its own faer rows and its own vendor identity. BLIS is a later arm and needs its own linkage decision, since BLIS ships no LAPACK.

Tooling

The seven scripts/*.py entry points are thin shims over campaign-toolkit, the shared package the campaigns now have in common. requirements.txt pins it by git revision; benchmarks/campaign.yaml is this campaign's descriptor, naming the measured project, the vendor arms and every other value the toolkit needs. The schemas/ copies are gone: the toolkit supplies them.

For local development, install the toolkit from a checkout instead of from git:

pip install -e ../campaign-toolkit

What this repository is not

It is not the library's per-PR suite. tlinalg-rs keeps its own Criterion rows (crates/tlinalg-bench/benches/kernels.rs), its protocol scripts (benchmarks/scripts/{pinned.sh,idle_cpus.py}) and its harness; this repository owns the campaign: the declarations, the revision pin, the run manifests, the index and the published reports.

About

Benchmark campaign for tlinalg-rs: results keyed by commit x hardware profile

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages