Summary
On gfx906 (Radeon VII / Vega 20, wave64), Gated Delta Net models (the Qwen3-Next / "Qwen3.8" family) run at ~0.12 tok/s generation and ~0.16 tok/s prompt — effectively unusable — while MoE and standard models on the same card are fast and the same GDN model on an RDNA2 (wave32) card is fine. So this looks specific to the GDN / linear-attention path on wave64, not a general gfx906 or bandwidth problem.
I have a Radeon VII on a Mac and am happy to run experimental builds and report back (see offer at the bottom).
Environment
- GPU: AMD Radeon VII (gfx906, Vega 20, wave64, 16 GB HBM2), eGPU over Thunderbolt 3
- Host: Intel Mac mini 2018 (Macmini8,1), macOS 15.7.9
- ToshLLM: v0.85.x (Aug 2026 build) — engine build 10495, llama.cpp base commit 3dc7285b4
- Device init banner:
wave64 mode (SIMD width 64): GPU prefill matmul, CPU decode/reductions for correct output
wave64 decode ON: quantized/f16/bf16 mat-vec on GPU (see the allowlist in ggml_metal_library_get_pipeline_mul_mv)
simdgroup reduction = false
simdgroup matrix mul. = false
Measurements (all via llama-server, one small /completion each, --load-mode none)
| Model |
Card |
Config |
Prompt t/s |
Gen t/s |
| Qwen3.8-27B IQ4_XS (GDN) |
Radeon VII (gfx906) |
-fa 1 -ctk q8_0 -ctv q8_0 |
0.16 |
0.12 |
| Qwen3.8-27B IQ4_XS (GDN) |
RX 6800 (gfx1030, wave32) |
-fa 1 -ctk q8_0 -ctv q8_0 |
~39 |
22.6 |
| gemma-4-26B-A4B IQ4_XS (MoE) |
Radeon VII (gfx906) |
-fa 1 -ctk q8_0 -ctv q8_0 |
81 |
38.5 |
So on the same Radeon VII, a MoE model gets 38.5 tok/s but the GDN model gets 0.12 tok/s (~300× slower); and the same GDN model on an RDNA2 card gets 22.6 tok/s. On gfx906 both prefill and decode collapse together for the GDN model (~0.12–0.16 t/s), which suggests something in the GDN graph is falling to CPU (or a wave64 GDN/reduction kernel is pathologically slow) rather than a decode-only issue.
Second, possibly-related bug: -fa 0 crashes on gfx906
Running the same GDN model with flash attention disabled (-fa 0, f16 KV) crashes the Metal backend on gfx906 immediately on first decode:
ggml_metal_synchronize: error: command buffer 0 failed with status 5
error: Internal Error (e00002bd:Internal Error)
ggml_metal_graph_compute: backend is in error state from a previous command buffer failure - recreate the backend to recover
llama_decode: failed to decode, ret = -3
(With -fa 1 there is no crash — it just runs at 0.12 t/s.) This may be a separate wave64 bug in the non-flash-attention attention path; noting it in case it's the same root cause.
What I've ruled out
- Not the card / not general gfx906 — MoE (gemma-4-26B-A4B) runs at 38.5 tok/s on the same card.
- Not the model / not the quant — the same
Qwen3.8-27B IQ4_XS file runs at 22.6 tok/s on an RX 6800 (wave32) with identical flags.
- Not mmap —
--load-mode none is used throughout (the fleet servers run this way; llama-bench without it hits the known mmap slowdown, so all numbers above are from llama-server with --load-mode none).
The GDN wave64 kernels do exist in the tree (GGML_OP_GATED_DELTA_NET / SSM_SCAN / SSM_CONV are enabled for wave64_decode, and there is a kernel_gated_delta_net_impl using gdn_sum32), so this reads as a perf/correctness bug in the wave64 GDN path rather than a missing kernel.
Offer
I have this Radeon VII on a Mac available as a gfx906 test rig and can build from source (scripts/build-engines.sh) and run any experimental branch, capture ISA (ISA_MCPU=gfx906), or grab profiles/logs you'd like. Happy to help validate a fix — just point me at a branch or tell me what to instrument.
Summary
On gfx906 (Radeon VII / Vega 20, wave64), Gated Delta Net models (the Qwen3-Next / "Qwen3.8" family) run at ~0.12 tok/s generation and ~0.16 tok/s prompt — effectively unusable — while MoE and standard models on the same card are fast and the same GDN model on an RDNA2 (wave32) card is fine. So this looks specific to the GDN / linear-attention path on wave64, not a general gfx906 or bandwidth problem.
I have a Radeon VII on a Mac and am happy to run experimental builds and report back (see offer at the bottom).
Environment
Measurements (all via
llama-server, one small/completioneach,--load-mode none)-fa 1 -ctk q8_0 -ctv q8_0-fa 1 -ctk q8_0 -ctv q8_0-fa 1 -ctk q8_0 -ctv q8_0So on the same Radeon VII, a MoE model gets 38.5 tok/s but the GDN model gets 0.12 tok/s (~300× slower); and the same GDN model on an RDNA2 card gets 22.6 tok/s. On gfx906 both prefill and decode collapse together for the GDN model (~0.12–0.16 t/s), which suggests something in the GDN graph is falling to CPU (or a wave64 GDN/reduction kernel is pathologically slow) rather than a decode-only issue.
Second, possibly-related bug:
-fa 0crashes on gfx906Running the same GDN model with flash attention disabled (
-fa 0, f16 KV) crashes the Metal backend on gfx906 immediately on first decode:(With
-fa 1there is no crash — it just runs at 0.12 t/s.) This may be a separate wave64 bug in the non-flash-attention attention path; noting it in case it's the same root cause.What I've ruled out
Qwen3.8-27B IQ4_XSfile runs at 22.6 tok/s on an RX 6800 (wave32) with identical flags.--load-mode noneis used throughout (the fleet servers run this way;llama-benchwithout it hits the known mmap slowdown, so all numbers above are fromllama-serverwith--load-mode none).The GDN wave64 kernels do exist in the tree (
GGML_OP_GATED_DELTA_NET/SSM_SCAN/SSM_CONVare enabled forwave64_decode, and there is akernel_gated_delta_net_implusinggdn_sum32), so this reads as a perf/correctness bug in the wave64 GDN path rather than a missing kernel.Offer
I have this Radeon VII on a Mac available as a gfx906 test rig and can build from source (
scripts/build-engines.sh) and run any experimental branch, capture ISA (ISA_MCPU=gfx906), or grab profiles/logs you'd like. Happy to help validate a fix — just point me at a branch or tell me what to instrument.