Skip to content

D3D12 backend v0.3.9 - on upstream llama.cpp caa8191df (2026-10-26)

Choose a tag to compare

@koza-coder koza-coder released this 29 Oct 21:12
· 393 commits to main since this release
7be91de

ggml-d3d12 : v0.3.9 - on upstream llama.cpp master caa8191 (2026-10-26)
The backend now sits on upstream ggml-org/llama.cpp master caa8191 (v0.3.8 sat on 88dcc46 of 2026-10-07; 426 upstream commits in between), so the newer model architectures and tools of upstream build with it.
MUL_MAT_ID and ADD_ID treat an expert id of -1 as a skipped slot (upstream #26631): the matching output row is zero for MUL_MAT_ID, nothing is added for ADD_ID. The old kernels read outside the buffers on such ids (device removed on the Radeon AI PRO R9700 in the new upstream tests).
Not implemented on the GPU yet: GGML_OP_TOP_K_MASK (new upstream fused op for the Qwen4exp attention mask), it runs on the CPU.
Measured on the Radeon AI PRO R9700 (test build, AVX1 CPU code; v0.3.8 = the published zip), llama-bench:
gemma-4-E2B Q4_0, generation (tg32): 93.4 / 93.1 t/s vs 93.4 / 92.2 t/s with v0.3.8 (equal).
gemma-4-E2B Q4_0, prompt processing (pp512): 3562 / 3562 t/s vs 3640 / 3734 t/s with v0.3.8 (2-5 % lower).
qwen2.5-0.5b Q4_0, generation (tg64): 219-220 t/s vs 222 t/s with v0.3.8.
Op tests on the R9700 (test-backend-ops, D3D120): ADD, MUL_MAT S0/S5, MUL_MAT_ID S0-S9, ADD_ID, FLASH_ATTN_EXT_S0, SOFT_MAX_S0, ROPE_S0, RMS_NORM, MUL, CPY, SCALE, GET_ROWS, SET_ROWS all pass.