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-13

On gfx1151 at f16 KV, stock Vulkan beats stock ROCm in EVERY cell of a matched matrix (one binary commit 3653e6d, one model, depths 0 to 131,072): decode +19-21% at every depth, prefill +4% to +20% growing with depth to 65k. The r/LocalLLaMA claim that ROCm leads Vulkan 3.5x at 65k depth — measured on an RDNA2 V620 — inverts on this chip. The community fork (v0.6.1) over stock Vulkan is a prefill-only win at f16 KV: +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).

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