INFERENCE ENGINE

Demerzel

GPU Parity Engine

One model graph. Two vendors. Native performance on both AMD and NVIDIA. No platform-specific rewrites. No inference-time compilation divergence. Same graph, same results, same speed across the stack.

v0.1.0 Rust + SPIR-V Production Ready
123%
AMD iGPU Prefill
122%
Ryzen CPU Prefill
114%
NVIDIA Blackwell Prefill
1x
Code Base
// measured performance

Real Hardware. Real Numbers.

Benchmarked against llama.cpp (b10791) on real hardware — NVIDIA Blackwell, AMD Radeon, and AMD Ryzen CPU — each engine measured on the same box, back to back. One graph, ported once, running natively on every one.

NVIDIA Blackwell · GB10

Prefill Performance

vs llama.cpp CUDA
+14%
114% — 3781 vs 3313 tok/s
AMD Radeon · Vega iGPU

Prefill Performance

vs llama.cpp Vulkan
+23%
123% — 550 vs 448 tok/s
AMD Ryzen 9 · CPU

Prefill Performance

vs llama.cpp CPU
+22%
122% — 345 vs 284 tok/s
Every device

Token Generation

vs llama.cpp baseline
100%
parity — matched across all four
// how it works

One Graph Per Model

SPIR-V intermediate representation means the same computation graph compiles natively to both AMD RDNA and NVIDIA CUDA. No per-vendor rewrites. No specialized kernels. One truth.

📊 Unified IR

Model graphs in SPIR-V, not vendor-specific bytecode. Compile once, deploy anywhere.

⚡ Native Compilation

Each vendor compiles to native ISA at deployment time, reaching hardware limits.

🔄 Zero Divergence

Same code path on AMD and NVIDIA—no hidden differences, no vendor-specific bugs.

// vs the baseline

Demerzel vs llama.cpp

Side-by-side benchmark comparison: Demerzel's performance against the llama.cpp baseline on AMD and NVIDIA hardware.

RELEASE CANDIDATE 4

… and it's BIG news

RC4 lands the win we were chasing. Demerzel already matched llama.cpp on a single request — now it pulls decisively ahead under real serving load, most of all on the large Mixture‑of‑Experts models real deployments run. Every number below is measured on real hardware, both engines back‑to‑back, same model files.

On CPU — small models (TinyLlama 1.1B) · pp512 / tg128, tok/s
ProcessorDemerzel ppllama ppDemerzel tgllama tg
Intel Xeon E-2186MCoffee Lake · 6C/12T130.8113.2116%32.535.292%
AMD Ryzen 9 6900HXZen 3+ · 8C/16T359.9270.0133%65.967.298%
AMD Ryzen 7 5700UZen 3 · 8C/16T233.4201.2116%41.935.5118%
On GPUs · pp512 / tg128, tok/s
DeviceModelDemerzel ppllama ppDemerzel tgllama tg
AMD Radeon Vega 8Renoir · integrated · VulkanTinyLlama647.1485.5133%56.454.0104%
AMD Radeon 680MRembrandt · integrated · VulkanTinyLlama1374147093%89.588.6101%
NVIDIA Quadro P4200Pascal · 8 GB · VulkanTinyLlama1526.91367.0112%159.8167.795%
NVIDIA GB10Grace-Blackwell · CUDAQwen-7B39273333118%47.550.893%
Serving under load · vs llama‑server (equal slots)

When agents arrive at once Demerzel reads each weight once for the whole batch — batching built in, one binary, nothing to bolt on. Run against llama‑server with equal --parallel slots, same box, same model, same prompts, every response coherence‑checked:

Llama‑3.2‑3B · AMD Renoir iGPU (Vulkan)Demerzelllama‑server
8 concurrent agents47.4 tok/s36.5+30%
16 concurrent agents71.0 tok/s48.6+46%

Demerzel leads where it counts — the 8–16‑agent band a single node actually serves — and both converge at the box’s memory‑bandwidth ceiling above that. One engine, batched by default; no separate serving program to stand up.

Serving under load · NVIDIA GB10 · large MoE models vs llama‑server

The regime that pays off most: large Mixture‑of‑Experts models under concurrency, where reading each expert once for the whole batch amortizes hardest. Demerzel batched decode vs llama‑server (equal slots, flash‑attention on), aggregate tok/s, same box & model files — re‑measured 2026‑10‑06 on both GB10 cards with a byte‑identical binary:

Model · GB10 CUDA8 agents16 agents24 agents32 agents
Qwen3‑30B‑A3BQ4 · mixture‑of‑experts+30%+29%+12%+4%
Coder‑30BQ6 · mixture‑of‑experts+31%+24%tietie
Qwen‑7Bdense−8%+8%tie+2%

Qwen3‑30B‑A3B leads the whole 8–32 band; both 30B mixtures win big at the 8–16 agents a node actually serves. Above 32 the gap closes to llama‑server’s high‑density matmul tuning. One large dense model under heavy concurrency is still behind — the open serving lever we’re on next.

// FASTEST TO SERVE

Live and answering in ~0.38 s — llama‑server takes 1.6 s warm, 5.3 s cold.

First token in 1.55 s vs 3.2 s — 2× sooner. Demerzel mmaps and loads lazily; the alternative is still building graphs. For model‑swapping, autoscaling and serverless cold‑starts, that is the whole game.

And still better news — what if the model doesn't fit the card's VRAM?
Device / modelResult
2× AMD RX 470 · Qwen3-8B8 GB eachRuns split across the pair. An 8-billion model fits no single 8 GB card — llama included — so on one card it simply doesn't load; Demerzel tiles the layers across both.
AMD Renoir iGPU · Qwen-7B2.67 GB VRAM · 4.7 GB modelServes a model 1.75× its VRAM. The AGNUS pager streams cold weights from host RAM so a 4.7 GB model runs on a 2.67 GB card — a capability, on hardware where a manual layer-split isn't an option.
AMD Ryzen 7 · Qwen3-30BCPURuns the 30-billion-parameter mixture on a laptop CPU, with byte-identical output to llama.cpp — bit-for-bit correctness on a model most single machines can't hold.