Skip to content

snap: bump version to llama.cpp b10549 - #313

Merged
talhaHavadar merged 1 commit into
mainfrom
renovate/ggml-org-llama.cpp-10549.x
Aug 25, 2026
Merged

talhaHavadar merged 1 commit into
mainfrom
renovate/ggml-org-llama.cpp-10549.x

Conversation

@renovate

@renovate renovate Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
ggml-org/llama.cpp major b10486 → b10549

Release Notes

ggml-org/llama.cpp (ggml-org/llama.cpp)

vb10549

Compare Source

Details

TP: enable tensor split for LFM2/LFM2MOE (#​26993)

Assisted-by: deepseek-v4-flash

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10545

Compare Source

Details

metal : clamp K extent in tensor API mat-mat kernel for K not a multiple of 32 (#​27450)

The Tensor API mat-mat path of kernel_mul_mm (GGML_METAL_HAS_TENSOR) fed a
static K=32 tile to the matmul2d op on every iteration. On the last, partial
K tile (ne00 % 32 != 0) the src1 slice extends past the K extent of the
tensor, and the op reads those out-of-bounds elements (undefined behavior per
the MSL specification, section 2.22.2). Depending on stale memory contents,
this corrupted the result or produced NaN.

Make the matmul2d op use dynamic_extent for K, and clamp the K extent of both
operand tensor views to the remaining valid K range (min(32, K - loop_k)) per
iteration, so the op reads exactly the valid K range on every iteration
(mirroring the tail handling of the MPP matmul2d examples). On K-aligned
inputs the clamp degenerates to the full 32-wide tile: the only difference
from the static-K op is that the dynamic-K op derives K from the operand
extents and edge-checks the tile against the tensor extents (a handful of
integer ops per iteration).

Add test-backend-ops MUL_MAT cases with K not a multiple of 32 to exercise
the unaligned K path.

Assisted-by: pi:llama.cpp/Qwen3.8-27B

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10541

Compare Source

Details

mtmd: add --mmproj-device argument (#​23255)

  • feat: add --mmproj-device arg & backwards compatible MTMD_BACKEND_DEVICE env var

  • feat: load mmproj device backend immediately, add -mmdev shortflag

  • fix: its a pointer now get the name

  • clean up

  • gen docs

  • nits


Co-authored-by: Xuan Son Nguyen son@huggingface.co

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10539

Compare Source

Details

vulkan: FA MMQ should use fp32 for Q quantization calculations (#​27413)

Codex found that qd could be a denorm and 1/qd would overflow.

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10538

Compare Source

Details

metal : dequant kv cache only for large batches (#​27438)

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10537

Compare Source

Details

CI: Use LLVM's OpenMP over MSVC_DEBUG_non_redist on Windows (#​26678)

  • CI: Use LLVM's OpenMP over MSFT_DEBUG_non_redist on Windows

Currently, we ship the non-redist debug version of microsoft's libomp.
This PR changes this to official LLVM's release, also packaging
the license as needed.

  • Remove LLVM SHA from job name to increase legibility

  • Add temp validations to CI

  • Revert "Add temp validations to CI"

This reverts commit eef97c8.

  • Build OpenMP in CI

  • Make OpenMP fetch self-contained in cmake and cache in CI

  • Robustify Licens-packaging

  1. Ship OpenMP license, not LLVM's.
  2. Invalidate cache also on checksum of the license
  • Remove stale reference in docs/build.md

  • No longer package base license in release

This was scope-creep

  • Add explanatory comment to OpenMP license

  • Remove arm64 smoke

Forgot this during conflict resolution during rebase of
c54c0e9

  • Remove GGML_OPENMP_FETCH_CACHE_DIR as requested by @​CISC

  • whitespace changes

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10536

Compare Source

Details

server: (router) lazy-load startup_models after main setup (#​27424)

  • server: (router) lazy-load startup_models after main setup

  • only allow is_first_load to populate it

  • nits

  • nits 2

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10534

Compare Source

Details

CUDA: adding switch points per HW and quant type to tune the mvq->MMQ decode crossover (#​26079)

  • CUDA: runtime GGML_CUDA_MMVQ_MAX to tune the mvq->MMQ decode crossover

Add a runtime override of the mul_mat_vec_q -> MMQ batch crossover
(default MMVQ_MAX_BATCH_SIZE). Lowering it routes batches above the
threshold from the CUDA-core vector kernel to the int8 MMQ tensor-core
path, which is faster once quantized decode becomes compute-bound at
B>1 (measured +23-41% at B=8 on RTX 5090 for Q4_K dense, no low-batch loss).

The value is parsed once and clamped to [1, MMVQ_MAX_BATCH_SIZE], since
mul_mat_vec_q asserts ncols_dst <= that; invalid input warns and falls
back to the default. The override is applied consistently in both the
mul_mat_vec_q and MUL_MAT_ID dispatch paths. Default behavior unchanged.

  • Added Blackwell specific switch point, to reduce dependence on runtime env var.

  • Add per-HW switch point values for DGX Spark and removing runtime env var

  • Adding switch points for Ada, tested on RTX 4090

  • Modifying DGX Spark numbers based on latest run and adding some comments and small functional changes relating to MoE

  • Reverting an unnecessary conditional

  • Update ggml/src/ggml-cuda/mmvq.cu


Co-authored-by: praneshgo 227579474+praneshgo@users.noreply.github.com
Co-authored-by: Oliver Simons osimons@nvidia.com

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10533

Compare Source

Details

common : gracefully fallback on unsupported regex patterns in JSON schema (#​26939)

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10532

Compare Source

Details

metal : dequantize quantized KV to F16 before flash attention (#​27390)

  • metal: dequantize q8_0 KV to f16 before flash attention

Add a preprocessing pass for GGML_OP_FLASH_ATTN_EXT on the Metal backend:
when the KV cache is quantized (Q8_0 for now), dequantize K and V into a
contiguous F16 scratch buffer and run the existing F16 flash attention
kernels on it, instead of the in-kernel dequantization path.

  • new kernel kernel_flash_attn_ext_dequant_to_f16<block_t, QK, deq_t4x4>:
    one thread per quant block (K then V), stride-aware so permuted KV is
    supported; instantiated for Q8_0 (extending to Q4_0/Q4_1/Q5_0/Q5_1 is
    one instantiation + one gate case)
  • the gate is type-only: dequantize whenever the KV is quantized,
    regardless of head sizes, GQA ratio or n_kv; the attention kernels
    themselves are untouched
  • the F16 copies live in the op's own scratch allocation
    (ggml_metal_op_flash_attn_ext_extra_dequant_f16); the KV pad kernel
    reads the dequantized buffers when the path is active
  • the FA pipeline getters gain a use_f16_kv flag selecting the existing
    f16 kernels and contiguous strides
  • ref: #​25556

Verification (M2 Ultra):

  • test-backend-ops test -o FLASH_ATTN_EXT: 4798/4798 pass, including the
    new q8_0 eval cases (decode/prompt, permuted, sinks+ALiBi+softcap,
    kv=113 pad path, kv=16384)
  • llama-perplexity on Qwen2.5-0.5B with -ctk q8_0 -ctv q8_0 matches the
    f16 KV reference (PPL 1.0008 vs 1.0008)

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • metal : launch the FA KV dequant kernel separately for K and V

Simplify kernel_flash_attn_ext_dequant_to_f16: it now dequantizes a single
tensor (its own ne/nb and dst) with no is_v branching, and the op dispatches
it twice with the same pipeline - once for K and once for V. The kargs
struct shrinks to a single ne/nb set plus nblocks.

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • metal : dequantize q4_0, q4_1, q5_0 and q5_1 KV to f16 before flash attention

The dequant pass now covers all quantized KV types supported by the Metal
flash attention kernels. The dequant kernel, kargs, scratch allocation and
dispatch are type-generic, so each type is one kernel instantiation plus one
gate case.

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • metal : skip the redundant V dequant when V is a view of K

In MLA-based models, the V of the FA op is a view of K (the first ne20
elements of each K row); the dequantized V is then a view of the dequantized
K, so skip the second dequant dispatch, do not reserve the V scratch region,
and let the pad and attention kernels read V from the K F16 buffer with K's
strides. The detection follows the CUDA backend:
V->view_src && (V->view_src == K || (V->view_src == K->view_src && V->view_offs == K->view_offs))

Also fix the FA pipeline getters: ns10/ns20 are function constants baked into
the kernels and must be the actual K/V row widths as seen by the kernel. The
dispatch now passes them explicitly (nb11_attn/nb10_attn, nb21_attn/nb20_attn)
instead of the getters assuming contiguous F16 KV (ns20 = dv), which was wrong
when V is read from K with K's row pitch (e.g. 576 vs 512).

New test cases: 576/512 q8_0 (MLA shape, V is a view of K) at kv=113 (KV pad),
nb=1 (vec) and nb=64 (non-vec).

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • test : remove backend-specific wording from test-backend-ops comments

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • pi : avoid backend mentions in test-backend-ops comments

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • metal : rename the FA dequant_f16 identifiers to kv_f16

Assisted-by: pi:llama.cpp/Qwen3.8-27B

  • cont : clean-up

  • cont : remove TODO

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI:

vb10531

Compare Source

Details

Revert "tensor-split meta backend fixes (#​26502)" (#​27433)

This reverts commit d59d455.

Website:

Attestations:

macOS/iOS:

Linux:

Android:

Windows:

✂ Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@moonthebot

Copy link
Copy Markdown
Collaborator

🚫 Moon Skywalker — PR Blacklisted

After 7 retry attempts, CI is still failing on this PR. I've created issue #314 to track this for manual review.

This PR will no longer be automatically monitored.

— Moon Skywalker

@talhaHavadar
talhaHavadar merged commit bff2093 into main Aug 25, 2026
42 of 65 checks passed
@talhaHavadar
talhaHavadar deleted the renovate/ggml-org-llama.cpp-10549.x branch August 25, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🚫 Renovate PR #313 blacklisted after 7 CI failures: snap: bump version to llama.cpp b10549

2 participants