Skip to content

h1 on the RTX 5070 Ti, 2026-10-16

The GPU tests and the sustained throughput of the kernel h1 (the hopper preset; its build), on an RTX 5070 Ti (sm_120, 70 SMs, torch 2.7.1+cu128, WSL2). Both ran on committed trees with no changes under mmaemu/, and every kernel came from the package fatbins (h1: sha256 261a7605…, mmaemu/backends/cuda/bin/h1.fatbin).

GPU tests

gpu-tests/run.sh ran four test files at 3d7dc66 (no changes under mmaemu/ or tests/; summary.txt):

File Result What it covers for h1
tests/test_kernels_ieee.py 124 passed the eight conformance generators at K = 16, 48 and 1,920 (K = 16 and 48 end in a half block), fatbin and NVRTC builds, raw NaN codes, any byte value, slow accumulation, contiguous split-K (S = 2 to 8), K not a multiple of 16; each kernel bit for bit against the CPU reference of its own preset
tests/test_cuda_runtime.py 16 passed storage offsets 1 to 15 (misaligned operands), a non-default stream, mixed devices and a request of another preset (ValueError), a second CUDA context
tests/test_h100_mini.py 373 passed the 124 CI jobs of the H100 probe on the CPU (124) and on the GPU, on the reference backend and on backend="auto" (248; auto runs every E4M3 x E4M3 job on cuda:h1), and the fixture's coverage check (1)
tests/test_backend_selection.py 25 passed each kernel serves only its own preset

Throughput

bench-run.sh ran, at 9a5d836 (no changes under mmaemu/ or tools/; bench-summary.txt), for each shape:

python tools/bench_kernels.py --kernels v1,v4,h1 --shape <1b|7b|40b> --M 2048 --data gauss40 --out <json>

The method is the one in docs/performance.md: CUDA events, a 1.5 s warm-up, then five 1.0 s windows. The host clock check fails on WSL2 (perf_counter / CLOCK_MONOTONIC_RAW = 1.058), so no host timer is used. Before timing, each kernel passed an exactness gate:

  • v1 and h1 were each bit for bit equal to the CPU reference of their own preset on a 16,384-output slice;
  • v4 was bit for bit equal to v1 over the full output.

The SM clock stayed at 2,707 to 2,722 MHz with no throttle reasons.

Shape (K x N) h1 v1 v4 (TMAC/s, median)
Evo 2 1B (1920 x 5760) 2.026 1.948 4.006
Evo 2 7B (4096 x 12288) 2.050 1.979 4.332
Evo 2 40B (8192 x 24576) 2.045 1.981 4.392

There was no v4-style kernel for the hopper preset yet (h4 followed the same day: h4-rtx-5070-ti). A first run on the uncommitted tree just before 50ff4a3 (the same fatbin images) gave the same numbers to within 0.003 TMAC/s; it was replaced by this run.