HomeQuestions › Vulkan or ROCm on Strix Halo?

Vulkan or ROCm on Strix Halo?

problem
Strix Halo's GPU can run local models through two different software routes — AMD's compute stack (ROCm) or the graphics API route (Vulkan) — and community reports disagree sharply about which is faster, often quoting measurements taken on entirely different GPU generations.
claim
The two backends are supposed to be interchangeable ways of running the same engine. In practice they differ by double digits, the gap moves with context depth, and numbers measured on other GPU families are routinely cited as if they transferred to this chip.
conclusion

On this chip: Vulkan, in every cell measured so far. At f16 KV, stock Vulkan beats stock ROCm at every depth from 0 to 131,072 tokens — decode +19-21% at every depth, prefill +4% to +20% growing with depth clm-0050. With quantised KV a community fork becomes the best long-context arm measured: 42.5 tok/s decode at 131,072, 2.3x stock ROCm clm-0051. One model measured so far — and a pending BF16 patch shows the lead can invert with the right kernel work clm-0046 — so a backend verdict is a depth-and-build statement, never a permanent truth.

A matched three-arm matrix put the question directly: stock ROCm and stock Vulkan built from the same llama.cpp commit, plus a community Vulkan fork, one model, depths 0 to 131,072, medians over fresh-process repetitions with the page cache dropped between them clm-0050. Vulkan led in every cell — both prefill (reading the prompt in) and decode (generating new tokens). The widely-quoted counter-claim, ROCm ahead 3.5x at 65k depth, was measured on an RDNA2 V620 — a different GPU family — and inverts here: at 65k on gfx1151 the same comparison reads Vulkan +20% prefill, +19.5% decode. Backend verdicts do not transfer across GPU families.

Quantised KV redraws the map rather than shifting it. Stock Vulkan's prefill collapses (-26% to -32% against its own f16) even as its decode gains; stock ROCm's decode craters with depth (-35.1% at 131k) — the same unpatched-build failure already measured and patched on another model; and the fork rescues the collapse completely while extending the decode gain, landing on the best long-context configuration measured on this chip: 42.5 tok/s at 131,072, at roughly half the KV memory clm-0051.

The scope line matters as much as the verdict. Every cell so far is one model — an hd256 mixture-of-experts, where the fork's own documentation predicts smaller gains than other head sizes — and the fork arm bundles a newer Mesa driver, so its edge over stock Vulkan is not single-variable clm-0051. Nor is the lead a law of the silicon: with a BF16 flash-attention patch applied, prefill inverts to ROCm +46.9% at 32k with bf16 KV, and at shallow depth every backend gap collapses toward noise clm-0046. A backend can also be fast and wrong — one community Vulkan build measured 24% faster while emitting garbage output clm-0014 — which is why every throughput series here sits behind an output-sanity guard. Treat any backend number that arrives without its depth, KV type and build hash as unusable.

What this rests on

generated from the citations above — each entry shows the claim's current state, so this page cannot silently rest on withdrawn evidence

clm-0050measured-heremed ●●○verified 2026-08-14

AMENDED 2026-08-14 — the rule below is PER-MODEL AND PER-PHASE, not fleet-wide; see the correction history and the amendment note. On gfx1151 at f16 KV, stock Vulkan beat stock ROCm in EVERY cell of a matched matrix measured on Qwen3.6-35B-A3B (one binary commit 3653e6d, depths 0 to 131,072): decode +19-21% at every depth, prefill +4% to +20% growing with depth to 65k. That finding was correct as measured and remains the reference case for this model. It does NOT generalise: the 2026-08-14 perf-matrix sweep found gpt-oss-120b's PREFILL inverts hard in ROCm's favour at depth — Vulkan −52% at d65536, −84% at d131072 (23.1 t/s vs ROCm's 144.3, tight across 3 reps) — while gpt-oss-120b's own DECODE still favours Vulkan (+10 to +16%), same direction as Qwen3.6-35B. Nemotron-3-Super is now a THIRD supporting data point rather than an absence: the OOM first recorded against it (twice, including at an expanded 122 GiB GTT ceiling) was a benchmarking-harness artifact of running stock ROCm under mmap on a model within ~40 GiB of the box's full memory, corrected 2026-08-14 — see clm-0053. On the identical binary with `--load-mode none`, Nemotron-3-Super UD-Q4_K_M at d32768 measures 244.05 pp / 16.43 tg (median of 3 post-reboot reps; an earlier single-rep check the same day landed within 2% at 248.79 pp / 16.39 tg) against Vulkan's own 139.8 pp / 17.56 tg at the same cell: ROCm +74.6% prefill, Vulkan +6.4% decode — the same prefill-favours-ROCm, decode-favours-Vulkan split gpt-oss-120b shows, now measured on a third architecture. The r/LocalLLaMA claim that ROCm leads Vulkan 3.5x at 65k depth — measured on an RDNA2 V620 — still inverts on gfx1151 for Qwen3.6-35B decode/prefill and for gpt-oss-120b decode, but NOT for gpt-oss-120b's own prefill, which is the live counter-example. The community fork (v0.6.1) over stock Vulkan remains a prefill-only win at f16 KV on Qwen3.6-35B: +13/+13/+1/+2.5/+16% by depth, decode unchanged (±1%), and no stride bug (41/41 layers on GPU, CPU utilisation identical to stock) — untested on the other two models.

clm-0051measured-heremed ●●○verified 2026-08-13

Quantised KV on gfx1151 splits three ways by build. Stock Vulkan q8_0 prefill COLLAPSES (-26% to -32% vs its own f16) even as its decode gains. Stock ROCm q8_0 decode CRATERS with depth (-16.8/-25.0/-35.1% at 32k/64k/131k) — the same unpatched-build failure clm-0022 measured and patched on the 122B, reproduced here on a build without the ce7689f kvfix. The community fork rescues the Vulkan collapse completely (q8_0 prefill within 3% of f16 at every depth) while keeping and extending the decode gain (+7.8/+14.1/+23.2% over its own f16). Fork + q8_0 is the best long-context configuration measured on this chip: 42.5 tok/s decode at 131,072 — +23% over the best f16 arm and 2.3x stock ROCm q8_0 — at roughly half the KV memory.

clm-0046measured-heremed ●●○verified 2026-08-11

The community BF16 flash-attention predictions (clm-0044) reproduce on this hardware under single-binary methodology: at 32k depth, stock Vulkan leads ROCm +17.4% prefill / +17.1% decode at f16 KV, and the PR-26856 patch inverts prefill to ROCm +46.9% with bf16 KV. At shallow depth every gap collapses (+2.6% / -1.0%), so backend comparisons are depth-statements or they are nothing. The fleet build delta is +2.8% pp / +0.9% tg with identical tau2 capability (anchor pair).

clm-0014communitymed ●●○verified 2026-08-05

On gfx1151, Vulkan measured ~22-24% faster than ROCm on the same 35B-A3B model and build — pp4096 1039 vs 840 t/s, tg128 53.1 vs 43.4 — but the Vulkan build produced GARBAGE OUTPUT for that model, so the numbers describe a broken configuration.

Related