What changed
10 builds in approximately 20 hours (continuing from b9940, covered July 9). Three architectural changes stand out: initial ExecuTorch (ET) backend (b9951); cluster-parallel decode FlashAttention for Adreno GPUs via OpenCL (b9949); smaller CUDA chunk processing for top-k/argsort to reduce peak memory (b9948).
| Build | UTC | Key change |
|-------|-----|------------|
| b9956 | Jul 10, 19:46 | CLI: fix crash on wrong server base URL (exception-based graceful exit) |
| b9952 | Jul 10, 17:18 | FlashAttention KQ mask optimizations; remove zero attention bias in DeepSeek V4 |
| b9951 | Jul 10, 16:15 | Initial ExecuTorch (ET) backend β MUL_MAT, ROPE, RMS_NORM, GLU, SOFT_MAX, GET_ROWS, CONT, SET_ROWS, MUL_MAT_ID kernels + performance logging |
| b9950 | Jul 10, 14:15 | Unit tests for llama-batch; Windows compatibility fixes |
| b9949 | Jul 10, 10:37 | OpenCL cluster-parallel decode FlashAttention for Qualcomm Adreno GPUs |
| b9948 | Jul 10, 07:43 | CUDA: top-k and argsort chunk processing to reduce peak GPU memory |
| b9947 | Jul 10, 04:46 | CLI: added --output option |
| b9946 | Jul 9, 22:20 | Hexagon backend: tile wide rows in pointwise unary ops to avoid VTCM overflow |
| b9945 | Jul 9, 21:47 | Chat template error handling moved inside try/catch (prevents server crashes) |
| b9941 | Jul 9, 20:17 | Optimize index by compile times; replace control flow with multiplication |
TL;DR
10 builds in 20h; b9951 is the headline β initial ExecuTorch (ET) backend bringing PyTorch's edge inference runtime into llama.cpp with 9 kernel implementations; b9949 adds cluster-parallel FlashAttention for Qualcomm Adreno mobile/embedded GPUs.
Developer signal
Upgrade to b9956 (cumulative). Three changes warrant specific attention: (1) ExecuTorch backend (b9951) β watch but don't ship yet: This is the first integration of PyTorch's ExecuTorch edge inference runtime as a backend inside llama.cpp. ExecuTorch lets you export a PyTorch model to a .pte file that runs natively on Arm, Apple Silicon, and Qualcomm hardware without Python. The b9951 build ships 9 kernel types (MUL_MAT, ROPE, RMS_NORM, GLU, SOFT_MAX, GET_ROWS, CONT, SET_ROWS, MUL_MAT_ID) plus performance logging and quants helpers β a solid foundation but not complete coverage for autoregressive generation. It is experimental and opt-in. If you are evaluating on-device inference pipelines combining PyTorch model export with llama.cpp serving, this backend is now worth tracking in upcoming builds. (2) Adreno cluster-parallel decode FlashAttention (b9949): Qualcomm Adreno GPU users running llama.cpp via OpenCL now get parallel-cluster decode FlashAttention β a meaningful throughput gain on Snapdragon SoCs (mobile and embedded). (3) CUDA chunk memory (b9948): top-k and argsort now process in smaller memory chunks, reducing peak VRAM usage during operations that caused OOM on 24GB cards at large context lengths. Drop-in upgrade, no config changes.