HALOBENCH_
The reference lab for local AI on Strix Halo-class hardware: what to run, how to configure it, and what it truly costs — every number wall-measured, provenance-graded, and corrected in public.
last metered draw 137.6 W (2026-08-11, eng-0064)standing cost £2.24/moduty cycle 79%models live 1build-time snapshot, 2026-08-15 05:49Z
The topology — what this lab actually runs
topology as of 2026-08-15 05:49Z — build-time snapshot of the record, not a live read
[aibeast]dark since 2026-07-23
[aihydra]active
retired: 1 · rejected: 2 · live: 1 — every exit on a recorded measurement
states: live · candidate ·retired · rejected · dashed = planned / dark · node → its model or record page
Four measurements
9.8x
prefix-cache reuse on this box — an 8,000-token prefix costs 25.99 s cold, 2.65 s warm
clm-0027 · verified 2026-08-08
+70.3%
decode recovered at 204,800 tokens — production's own context — by one cherry-picked KV-dequant commit
clm-0022 · verified 2026-08-08
6.81 Wh
per correct τ² answer on the 122B at f16 KV — 0.21 p at 30.3 p/kWh
clm-0042 · verified 2026-08-10
42%
energy cut at 200k context by the KV dequant patch — 146.1 Wh stock against 85.3 Wh patched
clm-0041 · verified 2026-08-10
Field snapshot → full comparison
| model | params | decode @32k | τ² airline | guard |
|---|---|---|---|---|
| Qwen3.6-35B-A3B | 35B / 3B active | 42.45 t/s | not run | guard 4/4 |
| gpt-oss-120b | 117B / ~5B active | 41.70 t/s | not run | guard failed |
| Qwen3.5-122B-A10B (MTP) | 122B / 10B active | 18.17 t/s | 0.545 ±0.208 n=22 | guard 4/4 |
| Nemotron-3-Super-120B-A12B | 120B / ~12B active | 17.16 t/s | 0.625 ±0.237 n=16 | guard 4/4 |
| Qwen3.8-27B | 27B dense | 7.29 t/s | 0.577 ±0.190 n=26 | no guard |
best measured configuration per model · every row's full fingerprint on /compare · exclusions stay visible: an excluded row is data, not an omission
Start with a question → all questions
Is thinking mode worth it?
conclusion
Per-model, not global. A net negative on the 122B — it deadlocks on 2 of 5 hard tasks rather than degrading clm-0033 — so any global default is wrong for part of the field.
From the log → the full notebook
- 2026-08-15claimOn gfx1151 at f16 KV, Qwen3.8-27B (dense) is a fourth model measured under the per-model, per-phase backend rule (clm-0050), and it lands emphatically on the prefill-favours-ROCm side: DECODE is backend-independent on this model (every matched cell within 5%), but Vulkan PREFILL collapses with depth — 0.55x ROCm at d32768 on Q8_0 (87.82 vs 159.98 t/s) and 0.48x on UD-Q4_K_XL (99.80 vs 207.61) — and at d131072 stock Vulkan cannot complete the cell at all: 2 of 2 reps in BOTH quants aborted with vk::DeviceLostError, the kernel logging an amdgpu ring timeout and recovering the device by ring reset, while ROCm completed every cell it was offered (83.44 pp / 6.11 tg Q8_0, 95.59 pp / 8.14 tg UD-Q4_K_XL at d131072). clm-0054
- 2026-08-15claimdraft-mtp speculation on Qwen3.8-27B (stock 3653e6d, gfx1151) peaks at spec-draft-n-max=3 over CLEAN cells — Vulkan Q8_0 17.75 t/s (2.26x its 7.86 no-speculation floor, acceptance 0.626), Vulkan UD-Q4_K_XL 26.68 t/s (2.23x, 0.623), ROCm Q8_0 18.25 t/s (2.33x, 0.6235) — and at n_max >= 4 the feature is BROKEN on this model: after accumulated generation volume in a live session (sequential VARIED prompts at full length; not fresh servers, not one repeated prompt, not short generations), generations start terminating at 1 token with <|im_end|> (id 248046). clm-0055
- 2026-08-15claimQwen3.8-27B's KV cache on llama.cpp costs exactly 64.00 KiB per token — the hybrid-attention allocation working as designed, measured byte-exact on this box: only 16 of the 64 layers carry a conventional KV cache (the 3:1 linear-to-full-attention layout), and 16 layers x 4 KV heads x 256 head_dim x 2 (K+V) x 2 bytes (f16) = 65,536 bytes/token. clm-0056
- 2026-08-15claimQwen3.8-27B met its registered agentic prediction: on the standing 5-task tau2 airline smoke subset it scored 1.000 (5/5, 21 tool-call messages, 0 empty assistant turns, VALID under the smoke gate) against the >= 0.80 bar recorded in the candidate record on 2026-08-14, BEFORE any measurement — and against the incumbent qwen36-27b-mtp's 0.80 on the identical tasks under the identical pinned-simulator protocol, where the incumbent failed task 2 and this model passed it. clm-0057
- 2026-08-15gateqwen38-27b: listed → screened — Screen tier passed on release day, on-box. clm-0055 clm-0056 clm-0057 run-0267
- 2026-08-15gateqwen38-27b: screened → benched — DAY-ONE SCREEN COMPLETE, all four phases, overnight on release day. clm-0054 clm-0055 clm-0056 clm-0057 run-0271 run-0267 run-0268
- 2026-08-15runs1 run landed on cfg-0066 (eos-cliffguard) run-0267
- 2026-08-15runs1 run landed on cfg-0067 (mtp-probe) run-0268
- 2026-08-15runs1 run landed on cfg-0066 (tau2-bench-airline) run-0271
- 2026-08-14claimAMENDED 2026-08-14 — the rule below is PER-MODEL AND PER-PHASE, not fleet-wide; see the correction history and the amendment note. clm-0050
- 2026-08-14claimOn gfx1151, stock ROCm 3653e6d's own BF16 KV decode is SLOWER than its own F16 KV decode: 29.26 t/s vs 42.35 t/s at 32,768 depth (Qwen3.6-35B-A3B, fa on) — a 31% penalty for switching to the KV type the community recommends for its quality, with prefill roughly unchanged (587.4 vs 595.0). stew675's rdna-boosts branch (commit ed89854) fixes it with a native BF16 flash-attention tile kernel: 47.31 t/s BF16 decode, +61.7% over stock's own BF16 and stock's best config on this chip. clm-0052
- 2026-08-14claimA benchmarking-harness defect, not a hardware limitation, produced this lab's earlier "Nemotron-3-Super cannot allocate on ROCm at any depth" verdict (clm-0050's first amendment, corrected 2026-08-14). clm-0053
- 2026-08-14gate4 candidates → screened: npu-embeddinggemma, npu-lfm2, npu-qwen3-4b-thinking, npu-whisper
- 2026-08-14gateqwen38-27b: listed → listed — RELEASED and CONFIRMED runnable.
How to read our numbers → method
measured-here wall-measured on this lab's hardware
community reported elsewhere, not yet reproduced here
vendor a vendor's own claim — never grounds for a verdict
unmeasured an honest gap, shown rather than hidden
retracted withdrawn in public, kept visible with its correction