Skip to content

D3D12 backend v0.4.1 - faster generation and speculative decoding on the MTT S80

Choose a tag to compare

@koza-coder koza-coder released this 01 Nov 23:04
· 487 commits to main since this release
16d67f2

D3D12 backend v0.4.1 - faster generation and speculative decoding on the MTT S80

Windows x64, DirectX 12. Same base as v0.4.0 (llama.cpp master caa8191, 2026-10-26).

What is new

  • Dense IQ models on the Moore Threads MTT S80 decode 2.5x faster. Qwen3.8-27B UD-IQ3_XXS: generation 1.77 -> 4.37 t/s (tg128), prompt 14.7 -> 19.3 t/s (pp512).
    New single-column kernels for IQ3_XXS / IQ3_S / IQ2_*, IQ codebooks in groupshared memory, 8 threads per row on Moore Threads, K-quants in the big prompt tile.
  • Batches of 2-4 tokens decode each weight once. Before, a 2-token batch cost as much as 2 single tokens. Qwen3.8-27B on the S80: pp2 4.75 -> 6.40 t/s, pp4 5.03 -> 8.64 t/s.
    This is what makes speculative decoding pay off: with the model's MTP head (mtp-Qwen3.8-27B-Q4_0.gguf, unsloth/Qwen3.8-27B-GGUF folder MTP) and
    --spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-p-min 0.75, generation is about 6.1 t/s instead of 4.4 t/s on the S80 (measured with llama-speculative-simple, 256 tokens, greedy).
    Also faster on other GPUs: Radeon AI PRO R9700 pp4 +44-51 %, Intel Iris Xe pp4 8.2 -> 15.6 t/s (Ministral-3-3B Q6_K).
  • AMD discrete GPUs: matvec threads per row chosen by weight type (IQ 8, others 32): glm-4-9b IQ2_M generation 68.0 -> 79.6 t/s on the R9700.

Switches (all default on, for A/B tests): GGML_D3D12_MV_NC=0 (one dispatch per column again), GGML_D3D12_MV_PERCOL=0, GGML_D3D12_MM_TPR=<n>.

Tested

  • MTT S80: every shipped exe of this zip (llama-server, llama-cli, llama-mtmd-cli, llama-completion, llama-perplexity, llama-bench, test-backend-ops), PPL qwen2.5-0.5b 17.29, LFM2-24B-A2B and Qwen3.8-27B benches.
  • Intel Iris Xe: test-backend-ops of this zip, 13 op groups (MUL_MAT 2520/2520, MUL_MAT_ID 1107/1107, ...).
  • Radeon AI PRO R9700: MUL_MAT / MUL_MAT_ID of the same source (test build).

Not tested: the other GPUs of the backend (Zhaoxin, Lisuan) - please report problems.