Benchmarks

Absolute measurements from uaii_bench v3: multi-provider GEMM, memory bandwidth, attention, session throughput, and Q4 memory footprint.

WorkloadResultNotes
OpenBLAS 256 / 512 / 1024141 / 284 / 425 GFLOP/s32 threads on WSL2
ref-tiled 256 / 512 / 10247.7 / 11.8 / 15.1 GFLOP/sBuilt-in kernel, no vendor BLAS
Bandwidth triad16.6 GB/sSTREAM triad, 256 MiB working set
Attention e2e59.7 msB1 H8 S512 D64 on the ref GEMM
Session 8×5122.77 msSession::run
Q4_0 memory7.11× · 4.5 MiBCompression against 32 MiB in f32

Host: WSL2 on an Intel Core i9-14900HX, Release build, with ref and openblas linked. Raw output is committed at benchmarks/results/local_wsl.json.

Reproduce

sudo apt install -y libopenblas-dev libdnnl-dev
TRIALS=21 bash scripts/run_bench_wsl.sh
# or:
./build/benchmarks/uaii_bench --suite all --providers all --trials 21 --json

Suites

gemm
Cycles every linked provider: ref, onednn, and openblas
bandwidth
STREAM copy, scale, add, and triad
attention
QKᵀ, softmax, and AV as one microbenchmark
session, quant
The IR execution stack and the Q4_0 packed path

Scope of these numbers

Everything above is a kernel or session measurement on one host. Three figures are deliberately absent, because they are not measured yet:

  • Tokens per second on public LLM checkpoints
  • Comparisons against llama.cpp, ONNX Runtime, or TensorRT
  • oneDNN throughput, which is only reported when onednn appears in linked_providers

Full methodology is in docs/benchmarks.md in the repository. See also Examples.