Skip to content

D3D12 backend v0.5.5 - fast CPU code on every PC (runtime CPU dispatch)

Choose a tag to compare

@koza-coder koza-coder released this 10 Nov 23:23

D3D12 backend v0.5.5 - fast CPU code on every PC (runtime CPU dispatch)

Windows x64, DirectX 12. On llama.cpp master 7592b61 (2026-11-10). Contains everything of v0.5.4.

What is new in v0.5.5

  • The CPU code picks the best instruction set when the program starts. Until now every CPU part was plain x86-64 so it would run on any PC. This zip carries 14 variants of the CPU backend in the cpu\ folder (ggml-cpu-x64, sse42, sandybridge, ivybridge, piledriver, haswell, skylakex, cascadelake, cooperlake, cannonlake, icelake, sapphirerapids, zen4, alderlake). At start ggml checks what the CPU supports and loads the best matching one; an old CPU gets the plain x64 one. Unzip the whole zip and keep the cpu folder next to the exes.
  • Smaller zip, shared DLLs. The exes are small launchers that use the libllama*.dll and ggml*.dll files of the zip, so the zip is 47.7 MB (v0.5.4: 73.8 MB). vla-cli.exe (robot models) stays the static build of v0.5.4.
  • Fix in this layout: llama-server no longer hangs at exit after --help or --version (a static destructor joined a thread while the DLL was unloading; the object is now never destroyed).
  • Upstream base and backend are unchanged from v0.5.4.

Speed on a Radeon AI PRO R9700 (DirectX 12, zip smoke)

Model Tool Result
Clover-35B-A3B-Preview Q4_K_M, -ngl 99 -lm none -fa 1 llama-bench pp512 646.82 t/s, tg128 63.69 t/s
Clover-35B-A3B-Preview Q4_K_M llama-perplexity PPL 4.2676
diffusiongemma-26B-A4B-it Q4_K_M llama-diffusion-cli 498.47 ms per step
LLaDA-MoE-7B-A1B-Instruct Q4_K_M llama-diffusion-cli, block 32, 32 steps 56.45 ms per step

Models that run fully on the GPU do not get faster from the CPU variants (D3D12 A/B, Clover Q4_K_M: pp512 690.09 -> 697.71 t/s, tg128 67.16 -> 67.54 t/s, one run each, inside the run-to-run spread). The smoke numbers are one run each on a warm card.

Speed when the CPU does the work (Ryzen 7 5700G, 8 threads, -ngl 0, DX12 build, exp1088, one run each)

Model Metric v0.5.4 (plain x86-64) v0.5.5 (best CPU variant, haswell here)
qwen2.5-0.5b-instruct Q4_0 pp512 48.21 t/s 747.44 t/s
qwen2.5-0.5b-instruct Q4_0 tg128 35.73 t/s 91.17 t/s
Clover-35B-A3B-Preview Q4_K_M pp512 10.63 t/s 65.47 t/s
Clover-35B-A3B-Preview Q4_K_M tg64 5.12 t/s 8.50 t/s

CPU-only numbers move from run to run (an earlier run of the Clover model gave pp512 87.61 t/s with the variants).

Tested

  • Radeon AI PRO R9700: every shipped exe of this zip (llama-server, llama-mtmd-cli, llama-cli, llama-completion, llama-perplexity, llama-bench, test-backend-ops, llama-diffusion-cli, llama-clover-diffusion, vla-cli with all 5 robot models): 15/15 steps pass, no NaN/Inf, the CPU backend loaded from cpu\ggml-cpu-<variant>.dll. Zip SHA-256 376bcefe66385cb16261ac4a53cd4b8872c0a31d5e026def1ebb2ba7624a3595.
  • llama-server also answered a chat request on the dispatch layout (qwen2.5-0.5b-instruct Q4_0, D3D12 build, "The capital of France is Paris.").
  • The .bat files were not run in the test; they call the tested exes. Other GPUs were not tested with this zip.