Phase-by-phase progress on the custom llama.cpp XDNA2 backend. · GitHub
21 sources · AIE utilisation spectrum · cross-vendor LLM comparison · kernel optimisation paths · 2026-03-30
AIE micro-tile sweep · +23% NPU decode (1.14 → 1.40 t/s) · SRAM budget analysis · instruction count as dominant factor · 2026-03-30
xrt::runlist · TILE_M=4096/14336 xclbins · bo_b dedup · 0.6% AIE utilisation discovered · 2026-03-30
bo_a DMA eliminated · +3% prefill · 112 MB saved · audit fixes · 2026-03-29
Phase 7 decode misattribution corrected · NPU prefill restored (12–18 t/s) · dispatch timing removed · 2026-03-28
Batch sweep · int4 · cascade · speculative decoding · 43.7 t/s Vulkan ceiling confirmed · 2026-03-26
930 t/s Vulkan prefill ✓ · 43.84 t/s decode was Vulkan, not NPU · see Phase 9 · 2026-03-26
pp2048: 19.5 t/s (+51% vs Phase 5) · all 4 K-slots on 4-col xclbins
8k context validated · NPU 2–3× over CPU · attention fallback characterised
NPU on dedicated XDNA2 silicon · bench-power.sh · J/tok baseline
K=4096 and K=14336 · Llama 3.1 8B fully covered · tile-loop optimisation
K=5632 FFN layers on NPU · multi-slot architecture (up to 8 slots)
First working XDNA2 backend · weight cache · K=2048 · TinyLlama 1.1B