docs / benchmarks / xpu
Benchmarks index
aot
codec
codec / csv
codec / json
collection
- Overview
- ArrayList
- BPlusTree
- Cache
- Collectors
- HashMap
- HashSet
- Heap
- ImmutableList
- ImmutableMap
- ImmutableSet
- LinkedList
- RedBlackTree
- Sort
collection / ltm
concurrent
gfx
hash
http
io
io / file
io / net
io / net / uri
lang
- Overview
- Allocation and ownership
- Calls and dispatch
- Exceptions
- Guid
- Loops
- Math and SIMD
- Optional
- Pair
- Slice
- String
- StringBuilder
- Whole programs: the Benchmarks Game
lang / stream
llm
math
math / fft
math / linalg
math / npio
math / poly
math / random
math / stats
ml
nucleo
primavera
process
reflect
search
search / distance
search / fuzzy
search / ngram
time
toolchain
toolchain / kernel-startup
wire
xpu
xpu / mesh
Device
cajeta.xpu.Device — the active device and the kernels that run on it. BabelStream gives sustained bandwidth, mixbench the roofline, the GEMM rows the matrix cores through CooperativeMatrix, and the last row is the one no other suite has: one @Kernel source run on CUDA, HIP, Vulkan and the CPU with a consistency check. Device rows are measured in interleaved rounds because GPU clocks are bimodal.
Benchmarks
| id | workload | against | check |
|---|---|---|---|
xpu/babelstream-copy | BabelStream copy at 2^25 float64 | BabelStream CUDA and HIP reference builds | checksum |
xpu/babelstream-mul | mul | same | checksum |
xpu/babelstream-add | add | same | checksum |
xpu/babelstream-triad | triad, the canonical bandwidth number | same | checksum |
xpu/babelstream-dot | dot | same | within epsilon |
xpu/device-saxpy | y = a*x + y on device at 2^26 float32 | CUDA and HIP C++, PyTorch | against host |
xpu/wave-reduce | sum of 2^26 float32 with wave reductions | CUB and rocPRIM DeviceReduce, PyTorch sum | within epsilon |
xpu/scan | inclusive scan of 2^26 int32 | CUB and rocPRIM DeviceScan, PyTorch cumsum | last element and spot checks |
xpu/gemm-f64 | 4096 × 4096 GEMM at float64 (the first suite’s device matmul, kept under its true type) | cuBLAS and rocBLAS, PyTorch matmul | against host within epsilon |
xpu/gemm-f32 | 4096 × 4096 GEMM through CooperativeMatrix at float32 | cuBLAS and rocBLAS, PyTorch matmul | against host within epsilon |
xpu/gemm-f16 | the same at float16 with float32 accumulate | same | within epsilon |
xpu/gemm-bf16 | the same at bfloat16 | same | within epsilon |
xpu/mandelbrot-device | mandelbrot at 16000 × 16000 on device | CUDA and HIP C++ | within 1e-5 relative of the host (FMA contraction moves a handful of pixels) |
xpu/mixbench-sweep | the mixbench operational-intensity sweep, points 0 to 256 as variants, on a fixed-point input so the check is exact | mixbench CUDA and HIP reference builds | exact |
xpu/launch-overhead | 1e4 trivial dispatches; the row is the time for all 1e4 (divide by 1e4 for a launch) | CUDA and HIP empty kernels, Vulkan compute | count |
xpu/cross-backend-showcase | the saxpy, reduce and GEMM kernels from one source on every backend present; variants cuda, hip, vulkan, cpu | Cajeta’s own backends | bit-exact where exact, epsilon where not |
Rows record the backend and driver; CUDA and Vulkan rows come from Phoenix, HIP and Vulkan rows from Proton. Compiler manifests on v0.46.3: bf16 is native matrix-core on NVPTX and the software tier on Vulkan, f32 the software tier on NVPTX and native on Vulkan, f16 native on both; no kernel spills. The CUDA competitor is one devserver program (cuBLAS, CUB, texture objects), which also builds with hipcc on a ROCm machine.
Results
One chart per benchmark, for the machine selected at the top of the page. Languages are the bars, best first; Cajeta’s bar is in color and the competitors’ are gray. A skipped competitor keeps its row with the reason in place of a bar. A benchmark with no row on the selected machine says so and shows nothing else.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Not yet measured on Proton.
Reproduce
cd bench
./bench.sh --bench babelstream-copy # Cajeta
./bench.sh --bench babelstream-copy --competitors # every pinned competitor
Every row records the compiler and competitor versions, flags, machine, OS and driver; METHODOLOGY states the rules a number must satisfy before it is published.
See also
- Reference: Device
- Source:
runtime/src/cajeta/xpu/Device.cajeta - Benchmark source:
bench/src/main/cajeta/bench/xpu/