]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/log
pkg/ggml/sources/llama.cpp
4 months agoggml-webgpu: Improve performance of mat-vec and mat-mat for MUL_MAT_ID (#22464)
Masashi Yoshimura [Thu, 30 Apr 2026 21:19:10 +0000 (06:19 +0900)]
ggml-webgpu: Improve performance of mat-vec and mat-mat for MUL_MAT_ID (#22464)

* Add mat-vec fast path of MUL_MAT_ID.

* Add shared accumulation vec logic and the other types supports.

* Add i-quant mat-mat for MUL_MAT_ID and fix some parts

* Remove n_experts from shader_lib_context.

4 months agoUpdate llama-mmap to use ftello/fseeko (#22497)
Reese Levine [Thu, 30 Apr 2026 21:17:52 +0000 (14:17 -0700)]
Update llama-mmap to use ftello/fseeko (#22497)

* Update llama-mmap to work with 32-bit wasm and >2GB models

* Update to gguf.cpp style

4 months agocommon : check for null getpwuid in hf-cache (#22550)
Adrien Gallouët [Thu, 30 Apr 2026 19:32:41 +0000 (21:32 +0200)]
common : check for null getpwuid in hf-cache (#22550)

Signed-off-by: Adrien Gallouët <redacted>
4 months agovulkan: add get/set tensor 2d functions (#22514)
Ruben Ortlam [Thu, 30 Apr 2026 15:37:13 +0000 (17:37 +0200)]
vulkan: add get/set tensor 2d functions (#22514)

* vulkan: add get/set_tensor_2d functions

* fix backend interface comments

* Update ggml/src/ggml-metal/ggml-metal.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
4 months agospec: fix argument typo (#22552)
Ben Guidarelli [Thu, 30 Apr 2026 14:32:32 +0000 (10:32 -0400)]
spec: fix argument typo (#22552)

4 months agoci : bump ty to 0.0.33 (#22535)
Sigbjørn Skjæret [Thu, 30 Apr 2026 13:15:54 +0000 (15:15 +0200)]
ci : bump ty to 0.0.33 (#22535)

* bump ty to 0.0.33

* update typings

4 months agovendor : update cpp-httplib to 0.43.2 (#22548)
Adrien Gallouët [Thu, 30 Apr 2026 13:04:39 +0000 (15:04 +0200)]
vendor : update cpp-httplib to 0.43.2 (#22548)

Signed-off-by: Adrien Gallouët <redacted>
4 months agoCUDA: fix tile FA kernel on Pascal (#22541)
Johannes Gäßler [Thu, 30 Apr 2026 11:04:50 +0000 (13:04 +0200)]
CUDA: fix tile FA kernel on Pascal (#22541)

4 months agoscripts : add wc2wt.sh - create worktree from current HEAD (#22513)
Georgi Gerganov [Thu, 30 Apr 2026 06:20:26 +0000 (09:20 +0300)]
scripts : add wc2wt.sh - create worktree from current HEAD (#22513)

* scripts : add wc2wt.sh - create worktree from current HEAD

Add a script to create a git worktree on a new branch from the current
HEAD. Similar to pr2wt.sh but for local development branches instead of
PRs.

Usage:
  ./scripts/wc2wt.sh gg/new-feature
  ./scripts/wc2wt.sh gg/new-feature "bash -l"

Assisted-by: llama.cpp:local pi
* cont : no need to try to delete the branch

4 months agoadd fast matmul iquants (#22504)
Rithik Sharma [Thu, 30 Apr 2026 05:58:32 +0000 (22:58 -0700)]
add fast matmul iquants (#22504)

4 months agospec : fix draft model checkpoints (#22521)
Georgi Gerganov [Thu, 30 Apr 2026 05:32:18 +0000 (08:32 +0300)]
spec : fix draft model checkpoints (#22521)

* spec : fix draft model checkpoints

* cont : clean-up

* cont : gate the ngram-mod reset warning behind verbose flag

4 months agospec : fix vocab compat checks in spec example (#22426)
Peter Sideris [Thu, 30 Apr 2026 05:18:25 +0000 (08:18 +0300)]
spec : fix vocab compat checks in spec example (#22426)

* port #22358 PR to examples/speculative/speculative.cpp
* use vocab_[tgt,dft] instead of ctx_[tgt,dft] when logging on draft
  model / target model vocabulary mismatch

Co-authored-by: Petros Sideris <redacted>
4 months agocommon : do not pass prompt tokens to reasoning budget sampler (#22488)
Aldehir Rojas [Wed, 29 Apr 2026 19:10:58 +0000 (14:10 -0500)]
common : do not pass prompt tokens to reasoning budget sampler (#22488)

4 months agohexagon: make vmem and buffer-size configurable (#22487)
Max Krasnyansky [Wed, 29 Apr 2026 18:51:21 +0000 (11:51 -0700)]
hexagon: make vmem and buffer-size configurable (#22487)

* hexagon: allow host to set max vmem size

We use a sane default but it's helpful to allow for an override if needed.

* hexagon: add support for measuring vmem space and move pinned mmaping management to host

* hexagon: update vmem checks to use uint64

* hexagon: bump op buffers to 16 (matches max mmaps)

* hexagon: bump default vmem to 3.2GB

* hexagon: add support for autodetecting vmem space and some logging cleanup in that area

* hexagon: fix whitespace warnings

* Update scripts/snapdragon/adb/run-cli.sh

Co-authored-by: Pascal <redacted>
* hex-adb: fix run-completion script

---------

Co-authored-by: Pascal <redacted>
4 months agoCUDA: fuse SSM_CONV + ADD(bias) + SILU (#22478)
Anav Prasad [Wed, 29 Apr 2026 18:39:56 +0000 (11:39 -0700)]
CUDA: fuse SSM_CONV + ADD(bias) + SILU (#22478)

4 months agospec : disacard last drafted token with low prob (#22506)
Georgi Gerganov [Wed, 29 Apr 2026 14:00:00 +0000 (17:00 +0300)]
spec : disacard last drafted token with low prob (#22506)

4 months agosync : ggml
Georgi Gerganov [Wed, 29 Apr 2026 13:43:08 +0000 (16:43 +0300)]
sync : ggml

4 months agoggml : bump version to 0.10.1 (ggml/1469)
Georgi Gerganov [Wed, 29 Apr 2026 13:41:45 +0000 (16:41 +0300)]
ggml : bump version to 0.10.1 (ggml/1469)

4 months agowebui: fix slow mic stop and WAV encode (#22480)
Pascal [Wed, 29 Apr 2026 10:58:35 +0000 (12:58 +0200)]
webui: fix slow mic stop and WAV encode (#22480)

* webui: instant mic stop, race-free recorder restart

* webui: faster WAV PCM encode via hoisted channels and Int16Array

* chore: update webui build output

* webui: drop setTimeout(0) hack and harden cancelRecording

* chore: update webui build output

4 months agoggml-cpu : disable tiled matmul on AIX to fix page boundary segfault (#22293)
shalinib-ibm [Wed, 29 Apr 2026 10:32:40 +0000 (16:02 +0530)]
ggml-cpu : disable tiled matmul on AIX to fix page boundary segfault (#22293)

* ggml-cpu : disable tiled matmul on AIX to fix page boundary segfault

vec_xst operations in the tiled path crash on AIX when writing
near 4KB page boundaries due to strict memory protection. Fall
back to mnpack implementation on AIX for stable execution.

Signed-off-by: Shalini Salomi Bodapati <redacted>
* Update ggml/src/ggml-cpu/llamafile/sgemm.cpp

Co-authored-by: Aaron Teo <redacted>
* Update sgemm.cpp

* Update sgemm.cpp

---------

Signed-off-by: Shalini Salomi Bodapati <redacted>
Co-authored-by: Aaron Teo <redacted>
4 months agoggml-cuda: refactor fusion code (#22468)
Aman Gupta [Wed, 29 Apr 2026 08:19:33 +0000 (16:19 +0800)]
ggml-cuda: refactor fusion code (#22468)

* ggml-cuda: refactor fusion code

* apply formatting + make env variable truthy

4 months agoggml-cpu: cmake: append xsmtvdotii march for SpacemiT IME (#22317)
qiurui144 [Wed, 29 Apr 2026 07:59:21 +0000 (15:59 +0800)]
ggml-cpu: cmake: append xsmtvdotii march for SpacemiT IME (#22317)

* ggml-cpu: cmake: append xsmtvdotii march for SpacemiT IME

When GGML_CPU_RISCV64_SPACEMIT=ON is set, ime1_kernels.cpp contains
inline asm for the vmadot family which requires the xsmtvdotii custom
extension.(problem can see in some blogs and make sure in K3 platform)
The current CMakeLists does not include xsmtvdotii, so any toolchain
that honours the explicit -march (tested with SpacemiT GCC 15.2) fails
at the assembler stage:

  Error: unrecognized opcode `vmadot v16,v14,v0',
         extension `xsmtvdotii' required

Append _xsmtvdotii to MARCH_STR when GGML_CPU_RISCV64_SPACEMIT is
enabled so the IME path can actually build with a capable toolchain.
No effect on builds that leave GGML_CPU_RISCV64_SPACEMIT off.

toolchain from https://www.spacemit.com/community/resources-download/Tools

* Update ggml/src/ggml-cpu/CMakeLists.txt

Co-authored-by: alex-spacemit <redacted>
---------

Co-authored-by: alex-spacemit <redacted>
4 months agoggml-webgpu: Fix bug in FlashAttention support check (#22492)
Reese Levine [Wed, 29 Apr 2026 07:59:00 +0000 (00:59 -0700)]
ggml-webgpu: Fix bug in FlashAttention support check (#22492)

* Fix flashattention support check for devices that don't support subgroups

* set path to none if kv_tile doesn't fit

4 months agocommon: Intentionally leak logger instance to fix hanging on Windows (#22273)
Masato Nakasaka [Wed, 29 Apr 2026 07:58:43 +0000 (16:58 +0900)]
common: Intentionally leak logger instance to fix hanging on Windows  (#22273)

* Changed to leak logger singleton to prevent hanging on Windows

* Fix comment

* Stopped using static vector

Using std::vector will cause g_col to be released before the logger thread exits, causing the logger thread to touch freed memory causing a crash

* Change so all logs are output before exit

* Added debug logging

* added more logging

* Added logging

* Explicitly free logger to avoid hanging on Win

* Reverted to leak logger instance again

* Removed debug log and fixed comment

* Fixed comment

---------

Co-authored-by: Georgi Gerganov <redacted>
4 months agoggml : add sve tuned code for gemm_q8_0_4x8_q8_0() kernel (#21916)
hrushitfujitsu [Wed, 29 Apr 2026 07:57:37 +0000 (13:27 +0530)]
ggml : add sve tuned code for gemm_q8_0_4x8_q8_0() kernel (#21916)

* Added sve tuned code for gemm_q8_0_4x8_q8_0() kernel

* Change arrays to static const in repack.cpp

---------

Co-authored-by: Vithulep <redacted>
4 months agoTP: fix delayed AllReduce + zero-sized slices (#22489)
Johannes Gäßler [Wed, 29 Apr 2026 06:55:07 +0000 (08:55 +0200)]
TP: fix delayed AllReduce + zero-sized slices (#22489)

4 months agoggml-cuda: Repost of 21896: Blackwell native NVFP4 support (#22196)
Michael Wand [Tue, 28 Apr 2026 22:47:42 +0000 (15:47 -0700)]
ggml-cuda: Repost of 21896: Blackwell native NVFP4 support (#22196)

4 months agoggml-cuda: add flash-attn support for DKQ=320/DV=256 with ncols2=32 (… (#22286)
lnigam [Tue, 28 Apr 2026 19:37:35 +0000 (01:07 +0530)]
ggml-cuda: add flash-attn support for DKQ=320/DV=256 with ncols2=32 (… (#22286)

* ggml-cuda: add flash-attn support for DKQ=320/DV=256 with ncols2=32 (GQA=32)

Adds MMA-f16 and tile kernel configs, dispatch logic, template instances,
and tile .cu file for Mistral Small 4 (head sizes 320/256), restricting to
ncols2=32 to support GQA ratio 32 only.

* Adding check to return BEST_FATTN_KERNEL_NONE in case GQA!=32

* Apply suggestions from code review

Address review comments

Co-authored-by: Johannes Gäßler <redacted>
* Address review comments and making kernel config default to DQK=512, DV=512 instead of DQK=256,DV=256

* Fixed bug with sinks=1, with ncols=32, there are two warp-groups created but sinks index is same(0,...,15) for both the groups hence with sinks=1, output is not matching with CPU output. Added sink_base which will be base index for each warp_group (threadIdx.y / np)

* Apply suggestions from code review

Co-authored-by: Johannes Gäßler <redacted>
* Update ggml/src/ggml-cuda/template-instances/generate_cu_files.py

Co-authored-by: Johannes Gäßler <redacted>
---------

Co-authored-by: Johannes Gäßler <redacted>
4 months agoconvert : add support for Nemotron Nano 3 Omni (#22481)
Daniel Bevenius [Tue, 28 Apr 2026 17:17:57 +0000 (19:17 +0200)]
convert : add support for Nemotron Nano 3 Omni (#22481)

This commit adds support for NVIDIA Nemotron Nano 3 Omni model enabling
this model to be converted to GGUF.

4 months agocommon : re-arm reasoning budget after DONE on new <think> (#22323)
Jillis ter Hove [Tue, 28 Apr 2026 17:15:36 +0000 (19:15 +0200)]
common : re-arm reasoning budget after DONE on new <think> (#22323)

DONE state absorbs all tokens including a new start tag, causing any think blocks after the first to run unbudgeted. Observed on unsloth/Qwen3.6-27B-GGUF which interleaves multiple <think> blocks per response.

Fixed by advancing start_matcher in DONE branch and re-arming to COUNTING with a fresh budget on match. Adds regression test (test-reasoning-budget: test 6).

4 months agovulkan: Coalesce Q4_K/Q5_K scale loads (#21751)
Matt Corallo [Tue, 28 Apr 2026 15:31:04 +0000 (15:31 +0000)]
vulkan: Coalesce Q4_K/Q5_K scale loads (#21751)

Some SPIR-V compilers (notably mesa) don't handle the current
vulkan Q4_K/Q5_K scale load pattern in mul_mat particularly well.
While reading three `u8`s from the 12-byte scale array should (at
least on some hardware) result in loading the full 12 bytes in a
single LOAD followed by whatever extraction is needed, at least
the ANV Intel driver really can't practically perform this
optimization.

`mesa`'s unsigned upper bound logic doesn't handle tracking bounds
through ternary, resulting in the `(is < 4) ? ... : is - 4` having
an infinite upper bound (as it cannot prove `is - 4` doesn't
underflow). While this could still be rectified if mesa looked at
the array bounds, it currently doesn't and `glslc` currently emits
SPIR-V that doesn't allow for this optimization anyway (though
maybe it will at some point, see
https://github.com/KhronosGroup/glslang/issues/4206).

In mul_mat_vecq we took a different approach to loading the same
fields. We read the first two bytes we needed from `scale` then
took a branch before deciding whether we needed to read a third
byte. In mesa this did, indeed, lead to a top-level branch with
conditional loads. As such these loads ended up not being
coalesced either (at least in the ANV driver) resulting in
additional instructions in our hot loop.

Instead, here, we go ahead and force loading the full 12 bytes and
extract the bits we need from the packed-u32s instead. In mul_mat
there's a few less ternaries and only one extra shift, so even on
drivers that did optimize the previous loads properly the only
material change should be pulling a few extra bytes into registers
(which on most hardware won't cost anything anyway, though
ironically on Intel it theoretically could). In mul_mat_vecq this
requires a bit of extra math and may read bytes from the u32 that
weren't needed, but it seems likely avoiding the branch is a win
on most platforms.

On Intel Xe2/mesa 26.0.4 with the optimizations from
https://gitlab.freedesktop.org/mesa/mesa/-/work_items/15162,

for shader matmul_id_subgroup_q4_k_f32_f16acc_aligned_l:
 * Instruction Count: 2753 -> 2688
 * SEND Count: 269 -> 261
 * Cycle Count: 273976 -> 266138
 * Max live registers: 248 -> 246
 * Non SSA regs after NIR: 381 -> 382

for shader matmul_id_subgroup_q5_k_f32_f16acc_aligned_l:
 * Instruction Count: 2767 -> 2702
 * SEND Count: 271 -> 263
 * Cycle Count: 274140 -> 268144
 * Max live registers: 248 -> 246
 * Non SSA regs after NIR: 381 -> 382

for shader mul_mat_vec_id_q4_k_q8_1_f32:
 * Instruction Count: 1930 -> 1646
 * SEND Count: 116 -> 71
 * Cycle Count: 1348306 -> 843350
 * Max live registers: 78 -> 84
 * Non SSA regs after NIR: 300 -> 135

for shader mul_mat_vec_id_q5_k_q8_1_f32:
 * Instruction Count: 2207 -> 1922
 * SEND Count: 131 -> 86
 * Cycle Count: 1392012 -> 1037836
 * Max live registers: 90 -> 90
 * Non SSA regs after NIR: 300 -> 135

for shader mul_mat_vec_q4_k_q8_1_f32:
 * Instruction Count: 2029 -> 1749
 * SEND Count: 111 -> 66
 * Cycle Count: 1347278 -> 840118
 * Max live registers: 74 -> 80
 * Non SSA regs after NIR: 299 -> 134

for shader mul_mat_vec_q5_k_q8_1_f32:
 * Instruction Count: 2307 -> 2022
 * SEND Count: 126 -> 81
 * Cycle Count: 1379820 -> 954042
 * Max live registers: 86 -> 86
 * Non SSA regs after NIR: 299 -> 134

On one Arc Pro B60, unsloth/Qwen3.5-35B-A3B-GGUF:UD-Q4_K_XL:
 * pp512: 907.34 ± 9.28 -> 941.94 ± 10.53 (+4%)
 * pp2048: 897.95 ± 1.82 -> 931.55 ± 1.79 (+4%)
 * tg128: 49.49 ± 0.02 -> 49.86 ± 0.05 (+ <1%)

On one Arc Pro B60, unsloth/Qwen3.5-27B-GGUF:Q4_K_S:
 * pp512: 324.13 ± 10.52 -> 354.33 ± 6.81 (+9%)
 * pp2048: 329.80 ± 0.25 -> 357.10 ± 0.06 (+8%)
 * tg128: 17.11 ± 0.01 -> 18.11 ± 0.01 (+6%)

On four Arc Pro B60s, unsloth/Qwen3.5-122B-A10B-GGUF:Q5_K_S with
-sm layer (note that -sm tensor improvements will naturally be
less):
 * pp512: 264.55 ± 2.81 -> 280.45 ± 3.94 (+6%)
 * pp2048: 319.32 ± 2.72 -> 335.70 ± 3.48 (+5%)
 * tg128: 26.39 ± 0.01 -> 26.67 ± 0.01 (+1%)

4 months agoggml-webgpu: fix buffer aliasing for ssm_scan and refactor aliasing logic (#22456)
Reese Levine [Tue, 28 Apr 2026 14:27:17 +0000 (07:27 -0700)]
ggml-webgpu: fix buffer aliasing for ssm_scan and refactor aliasing logic (#22456)

* Refactor buffer aliasing to be part of shader lib decisions

* cleanup

* formatting

4 months agowebui: Server tools (#21237)
Aleksander Grygier [Tue, 28 Apr 2026 11:35:49 +0000 (14:35 +0300)]
webui: Server tools (#21237)

* wip: server_tools

* feat: Integrate with `/tools` endpoint

* feat: Builtin + MCP + JSON Schema Tools WIP

* refactor

* displayName -> display_name

* snake_case everywhere

* rm redundant field

* feat: Improvements

* chore: update webui build output

* refactor: Updates after server updates

* chore: update webui build output

* change arg to --tools all

* feat: UI improvements

* chore: update webui build output

* add readme mention

* llama-gen-docs

* chore: update webui build output

* chore: update webui build output

* chore: update webui build output

* feat: Reorganize settings sections

* feat: Separate dialogs for MCP Servers Settings and Import/Export

* feat: WIP

* feat: WIP

* feat: WIP

* feat: WIP

* feat: WIP

* feat: WIP

* WIP on allozaur/20677-webui-server-tools

* feat: UI improvements

* chore: Update package lock

* chore: Run `npm audit fix`

* feat: UI WIP

* feat: UI

* refactor: Desktop Icon Strip DRY

* feat: Cleaner rendering and transition for ChatScreen

* feat: UI improvements

* feat: UI improvement

* feat: Remove MCP Server "enable" switch from Tools submenu

* chore: Run `npm audit fix`

* feat: WIP

* feat: Logic improvements

* refactor: Cleanup

* refactor: DRY

* test: Fix Chat Sidebar UI Tests

* chore: Update package lock

* refactor: Cleanup

* feat: Chat Message Action Card with Continue and Permission flow implementations

* feat: Add agentic steering messages, draft messages and improve chat UX

* fix: Search results UI

* test: Fix unit test

* feat: UI/UX improvements

* refactor: Simplify `useToolsPanel` access in components

* feat: Implement Processing Info Context API

* feat: Implement 'Go back to chat' functionality for settings

* feat: Enhance MCP Server management in Chat Form Attachments

* style: Minor UI and branding adjustments

* chore: Update webui static build output

* chore: Formatting, linting & type checks

* feat: Draft messages logic

* feat: UI improvements

* feat: Steering Messages improvements

* refactor: Cleanup

* refactor: Cleanup

* feat: Improve UI

* refactor: Settings navigation hook

* refactor: DRY code

* refactor: DRY ChatMessageUser UI components

* refactor: Desktop Icon Strip DRY

* refactor: Tools & permissions

* fix: Navigation condition

* refactor: Cleanup

* refactor: Cleanup

* refactor: Cleanup

* fix: preserve reasoning_content in agentic flow

---------

Co-authored-by: Xuan Son Nguyen <redacted>
4 months agovulkan: add barrier after writetimestamp (#21865)
Jeff Bolz [Tue, 28 Apr 2026 10:28:12 +0000 (12:28 +0200)]
vulkan: add barrier after writetimestamp (#21865)

4 months agoggml: improve SPIR-V headers detection with __has_include (#21918)
Emil Askerov [Tue, 28 Apr 2026 10:19:06 +0000 (13:19 +0300)]
ggml: improve SPIR-V headers detection with __has_include (#21918)

* ggml: improve SPIR-V headers detection with __has_include while preserving original _WIN32 logic

* Address review comments: fix fallback logic and add FreeBSD support

* Remove spirv_cross fallback as per review

* Remove redundant __has_include check

4 months agoggml : skip already registered backends and devices (#22296)
Adrien Gallouët [Tue, 28 Apr 2026 07:02:32 +0000 (09:02 +0200)]
ggml : skip already registered backends and devices (#22296)

Signed-off-by: Adrien Gallouët <redacted>
4 months agoggml : revert to -lm linking instead of find_library (#22355)
Adrien Gallouët [Tue, 28 Apr 2026 06:56:02 +0000 (08:56 +0200)]
ggml : revert to -lm linking instead of find_library (#22355)

* ggml : revert to -lm linking instead of find_library

`find_library(MATH_LIBRARY m)` was introduced recently, but it breaks
CUDA compilation with GGML_STATIC. I could not find any valid use case
where we would prefer `find_library` over the standard `-lm` approach.

This commit is also meant to start a discussion if there is a valid
reason to keep `find_library(MATH_LIBRARY m)`, we should clarify what
problem it was solving and find an alternative fix that does not break
CUDA with GGML_STATIC.

Signed-off-by: Adrien Gallouët <redacted>
* ggml : use MATH_LIBRARY only if defined

Signed-off-by: Adrien Gallouët <redacted>
* ggml : fix initial broken condition

Signed-off-by: Adrien Gallouët <redacted>
* ggml : always respect MATH_LIBRARY when defined

Signed-off-by: Adrien Gallouët <redacted>
---------

Signed-off-by: Adrien Gallouët <redacted>
4 months agoCANN: add new ops, optimize existing ops (#21204)
hipudding [Tue, 28 Apr 2026 06:27:22 +0000 (14:27 +0800)]
CANN: add new ops, optimize existing ops (#21204)

New operators:
- GGML_OP_SET: implement via aclnnInplaceCopy on target region
- GGML_OP_CUMSUM: implement via aclnnCumsum
- GGML_OP_FILL: implement via aclnnInplaceFillScalar
- GGML_OP_DIAG: implement via aclnnInplaceCopy on diagonal strides
- GGML_OP_TRI (lower/lower_diag/upper_diag/upper): implement via
  aclnnTril(-1/0) and aclnnTriu(0/1) with appropriate diagonal offsets
- GGML_OP_SOLVE_TRI: implement via aclnnTriangularSolve
- GGML_UNARY_OP_SOFTPLUS: implement via aclnnSoftplus

Optimizations:
- GLU (SwiGLU/GeGLU/GeGLU_ERF/GeGLU_QUICK): fuse with aclnnSwiGlu /
  aclnnGeGluV3 when applicable; fallback conditions now checked inside
  each function rather than at the call site
- CROSS_ENTROPY_LOSS: replace 5-kernel sequence (LogSoftmax→Mul→
  ReduceSum×2→Muls) with single aclnnSoftmaxCrossEntropyWithLogits call
- L2_NORM: fix in-place ClampMin on norm result (was clamping wrong
  tensor); add eps clamping before division to avoid divide-by-zero
- PAD_REFLECT_1D: eliminate per-ne[3] loop; assert contiguity and call
  ReflectionPad1d once on the full 4-D view; remove redundant nb copies
- GET_ROWS: replace IndexSelect with GatherV2 per batch slice; refactor
  helper into gather_batched lambda with batch loop inlined
- SET_ROWS: replace IndexCopy with InplaceIndexCopy per batch slice;
  refactor helper into scatter_batched lambda with batch loop inlined
- OUT_PROD: replace O(ne[3]*ne[2]*ne[1]) Ger+InplaceAdd loop with
  per-slice Matmul loop (src0 @ src1^T); handles strided-broadcast
  batch dims where ne02/ne03 may differ from ne2/ne3
- backend memset_tensor: implement via aclrtMemset (was NULL)

Bug fixes:
- COUNT_EQUAL: use non-inplace EqTensor into a same-type temporary
  buffer instead of InplaceEqTensor, avoiding corruption of src0
- ACL graph cache (USE_ACL_GRAPH): restore node_type and src_type[]
  fields in ggml_graph_node_properties; has_matching_properties() was
  missing type checks, causing F16 and BF16 tensors (same nb[0]=2) to
  incorrectly share cached graphs and produce wrong results (ERR≈679)
- graph cache op_params matching: compare full GGML_MAX_OP_PARAMS
  bytes so that ops differing only in parameters are not incorrectly
  replayed from cache

4 months agospec : refactor params (#22397)
Georgi Gerganov [Tue, 28 Apr 2026 06:07:33 +0000 (09:07 +0300)]
spec : refactor params (#22397)

* spec : refactor params

* cont : fix

* cont : rename "sparam" to "sampling"

* cont : add spec params category

* cont : add info about removed arguments

* cont : skip param length check for spec params

* cont : adapt server tests

4 months agoserver: use pos_next instead of n_tokens for m-rope (#22439)
Aman Gupta [Tue, 28 Apr 2026 05:41:00 +0000 (13:41 +0800)]
server: use pos_next instead of n_tokens for m-rope (#22439)

4 months agoggml-webgpu: add Q1_0 support (#22374)
Rithik Sharma [Mon, 27 Apr 2026 22:50:59 +0000 (15:50 -0700)]
ggml-webgpu: add Q1_0 support (#22374)

* add fast matmul matvec q1_0 kernel

* ggml-webgpu: drop redundant zero-fills in Q1_0 shmem init

4 months agoserver: (router) Forward form-data to model server (Fixes #22044) (#22118)
tha80 [Mon, 27 Apr 2026 21:55:00 +0000 (23:55 +0200)]
server: (router) Forward form-data to model server (Fixes #22044) (#22118)

* This commit enables the router to forward form-data to model server.
Fixes #22044 (enabling to use the /v1/audio/transcriptions in router mode)

* * Applied the suggestion from Copilots first comment: using the non-throwing json::parse overload.
* Addressed Copilots third comment by extending the files representation to also include filename and content-type
* Addressed Copilots fourth comment by making the RNG thread_local

* Changed variable body from std::string to std::ostringstream in build_multipart_body
as suggested by ngxson in https://github.com/ggml-org/llama.cpp/pull/22118#discussion_r3127099053

* Added sanitize_field lambda in build_multipart_body for key, filename and content_type
as suggested by ngxson in https://github.com/ggml-org/llama.cpp/pull/22118#discussion_r3127104647

* explicitly checking if value/item is string before calling value/item.get<std::string>()
as requested by ngxson in https://github.com/ggml-org/llama.cpp/pull/22118#discussion_r3127111279

* Added double quote to the sanitize lambda and throw on json parse failure

---------

Co-authored-by: Ralph Paßgang <redacted>
4 months agoadd fast mat-vec kernels for i-quants (#22344)
Rithik Sharma [Mon, 27 Apr 2026 15:25:45 +0000 (08:25 -0700)]
add fast mat-vec kernels for i-quants (#22344)

4 months agoAdditional test for common/gemma4 : handle parsing edge cases (#22420)
Igor Rudenko [Mon, 27 Apr 2026 14:36:59 +0000 (17:36 +0300)]
Additional test for common/gemma4 : handle parsing edge cases (#22420)

* Additional test for common/gemma4 : handle parsing edge cases

* Move tests to Gemma 4 test group

4 months agofix: rpc-server cache may not work in Windows environments (#22394)
unraido [Mon, 27 Apr 2026 14:25:09 +0000 (23:25 +0900)]
fix: rpc-server cache may not work in Windows environments (#22394)

* fix: create directory and log cache file name.

* Remove GGML_LOG_INFO conditional compilation.

---------

Co-authored-by: kotaro <redacted>
4 months agoFix type casting for unaccounted memory calculation (#22424)
rankaiyx [Mon, 27 Apr 2026 12:31:13 +0000 (20:31 +0800)]
Fix type casting for unaccounted memory calculation (#22424)

4 months agodownload : prefer q8_0 when q4_k not available (#22428)
Georgi Gerganov [Mon, 27 Apr 2026 12:30:29 +0000 (15:30 +0300)]
download : prefer q8_0 when q4_k not available (#22428)

4 months agomodel : remove duplicate wo_s scale after build_attn (Qwen3, LLaMA) (#22421)
ynankani [Mon, 27 Apr 2026 07:58:48 +0000 (07:58 +0000)]
model : remove duplicate wo_s scale after build_attn (Qwen3, LLaMA) (#22421)

Signed-off-by: Yash Nankani <redacted>
4 months agoconvert : remove input_scale for dequantized fp8 modelopt (#22356)
Sigbjørn Skjæret [Mon, 27 Apr 2026 06:45:01 +0000 (08:45 +0200)]
convert : remove input_scale for dequantized fp8 modelopt (#22356)

4 months agoggml : use 64 bytes aligned tile buffers (#21058)
Adrien Gallouët [Mon, 27 Apr 2026 06:30:55 +0000 (08:30 +0200)]
ggml : use 64 bytes aligned tile buffers (#21058)

| Model                            | Test   |   t/s OLD |   t/s NEW |   Speedup |
|:---------------------------------|:-------|----------:|----------:|----------:|
| qwen35 0.8B BF16                 | pp512  |    584.59 |    595.41 |      1.02 |
| qwen35 0.8B BF16                 | tg128  |     52.23 |     52.82 |      1.01 |
| qwen35 0.8B IQ2_M - 2.7 bpw      | pp512  |    260.64 |    261.70 |      1.00 |
| qwen35 0.8B IQ2_M - 2.7 bpw      | tg128  |     81.17 |     80.89 |      1.00 |
| qwen35 0.8B IQ2_XXS - 2.0625 bpw | pp512  |    302.36 |    302.56 |      1.00 |
| qwen35 0.8B IQ2_XXS - 2.0625 bpw | tg128  |     84.93 |     85.12 |      1.00 |
| qwen35 0.8B IQ3_XXS - 3.0625 bpw | pp512  |    263.22 |    260.01 |      0.99 |
| qwen35 0.8B IQ3_XXS - 3.0625 bpw | tg128  |     80.29 |     78.94 |      0.98 |
| qwen35 0.8B IQ4_NL - 4.5 bpw     | pp512  |    728.65 |    742.09 |      1.02 |
| qwen35 0.8B IQ4_NL - 4.5 bpw     | tg128  |     82.39 |     84.46 |      1.03 |
| qwen35 0.8B IQ4_XS - 4.25 bpw    | pp512  |    681.33 |    677.06 |      0.99 |
| qwen35 0.8B IQ4_XS - 4.25 bpw    | tg128  |     80.18 |     79.28 |      0.99 |
| qwen35 0.8B Q2_K_M               | pp512  |    413.28 |    415.94 |      1.01 |
| qwen35 0.8B Q2_K_M               | tg128  |     81.90 |     82.78 |      1.01 |
| qwen35 0.8B Q3_K_M               | pp512  |    493.17 |    495.08 |      1.00 |
| qwen35 0.8B Q3_K_M               | tg128  |     82.75 |     83.23 |      1.01 |
| qwen35 0.8B Q3_K_S               | pp512  |    429.35 |    427.64 |      1.00 |
| qwen35 0.8B Q3_K_S               | tg128  |     86.69 |     87.02 |      1.00 |
| qwen35 0.8B Q4_0                 | pp512  |    783.46 |    782.32 |      1.00 |
| qwen35 0.8B Q4_0                 | tg128  |     88.23 |     87.90 |      1.00 |
| qwen35 0.8B Q4_1                 | pp512  |    741.71 |    729.76 |      0.98 |
| qwen35 0.8B Q4_1                 | tg128  |     85.44 |     86.01 |      1.01 |
| qwen35 0.8B Q4_K_M               | pp512  |    676.24 |    681.31 |      1.01 |
| qwen35 0.8B Q4_K_M               | tg128  |     76.59 |     77.06 |      1.01 |
| qwen35 0.8B Q4_K_S               | pp512  |    683.12 |    688.81 |      1.01 |
| qwen35 0.8B Q4_K_S               | tg128  |     80.50 |     81.19 |      1.01 |
| qwen35 0.8B Q5_K_M               | pp512  |    635.33 |    642.11 |      1.01 |
| qwen35 0.8B Q5_K_M               | tg128  |     72.07 |     72.49 |      1.01 |
| qwen35 0.8B Q5_K_S               | pp512  |    660.95 |    658.18 |      1.00 |
| qwen35 0.8B Q5_K_S               | tg128  |     72.19 |     72.95 |      1.01 |
| qwen35 0.8B Q6_K                 | pp512  |    647.97 |    638.84 |      0.99 |
| qwen35 0.8B Q6_K                 | tg128  |     72.83 |     72.49 |      1.00 |
| qwen35 0.8B Q8_0                 | pp512  |    805.01 |    785.49 |      0.98 |
| qwen35 0.8B Q8_0                 | tg128  |     70.10 |     70.13 |      1.00 |

Signed-off-by: Adrien Gallouët <redacted>
4 months agocommon: fix missing exports in llama-common (#22340)
Max Krasnyansky [Mon, 27 Apr 2026 05:06:39 +0000 (22:06 -0700)]
common: fix missing exports in llama-common (#22340)

* common: refactor common/debug to move abort_on_nan into base_callback_data

Passing bool abort_on_nan as template parameter for common_debug_cb_eval is unnecessary and creates an issue with LTO.
It should just be a member of the base_callback_data instead.

* cont : cleanup

* common : use pimpl in debug.h to reduce header dependencies

Move common_debug_cb_user_data's data members (std::regex,
std::vector<uint8_t>) into a private impl struct in debug.cpp.

This removes the includes of common.h and <regex> from debug.h,
reducing transitive dependencies for any translation unit that
includes the header.

Assisted-by: llama.cpp:local pi
---------

Co-authored-by: Georgi Gerganov <redacted>
4 months agopr2wt : symlink .pi (#22386)
Georgi Gerganov [Sun, 26 Apr 2026 16:49:26 +0000 (19:49 +0300)]
pr2wt : symlink .pi (#22386)

4 months agoadd performance-portable tuning for register-tile and subgroup matmul (#22241)
Rithik Sharma [Sun, 26 Apr 2026 16:26:28 +0000 (09:26 -0700)]
add performance-portable tuning for register-tile and subgroup matmul (#22241)

4 months agoFix recurrent state serialization for partial reads and writes (#22362)
Gaurav Garg [Sun, 26 Apr 2026 11:34:40 +0000 (17:04 +0530)]
Fix recurrent state serialization for partial reads and writes (#22362)

The previous code worked only for full tensor reads and writes and was hitting `GGML_ASSERT(size == ggml_nbytes(tensor)); ` assert when tested with llama-server.

4 months agoGithub: set meta backend code owner (#22388)
Johannes Gäßler [Sun, 26 Apr 2026 11:34:13 +0000 (13:34 +0200)]
Github: set meta backend code owner (#22388)

4 months agoCUDA: better coalesce data-access for contiguous concat (#22330)
Oliver Simons [Sun, 26 Apr 2026 07:21:45 +0000 (09:21 +0200)]
CUDA: better coalesce data-access for contiguous concat (#22330)

Also, distribute all elements across CTAs evenly instead of launching
one CTA per dim

4 months agoggml-cpu : re-enable fast gelu_quick_f16 (#22339)
Sigbjørn Skjæret [Sun, 26 Apr 2026 06:28:14 +0000 (08:28 +0200)]
ggml-cpu : re-enable fast gelu_quick_f16 (#22339)

4 months agoggml-cpu: optimize avx2 q6_k (#22345)
Eve [Sun, 26 Apr 2026 06:27:50 +0000 (06:27 +0000)]
ggml-cpu: optimize avx2 q6_k (#22345)

4 months agoopencl: add iq4_nl support (#22272)
lhez [Sun, 26 Apr 2026 04:21:58 +0000 (21:21 -0700)]
opencl: add iq4_nl support (#22272)

* opencl: add general support for iq4_nl

* opencl: add iq4_nl gemm/gemv for adreno

* opencl: pack 2 lut entries into a uint

4 months agohexagon: guard HMX clock request for v75+ platforms (#22377)
Trivikram Reddy [Sun, 26 Apr 2026 00:58:26 +0000 (19:58 -0500)]
hexagon: guard HMX clock request for v75+ platforms (#22377)

4 months agochat: fix handling of space in reasoning markers (#22353)
Piotr Wilkin (ilintar) [Sat, 25 Apr 2026 19:24:13 +0000 (21:24 +0200)]
chat: fix handling of space in reasoning markers (#22353)

* chat: fix handling of space in reasoning markers

* fix tests

* whitespace

4 months agospec : fix vocab compat checks (#22358)
Georgi Gerganov [Sat, 25 Apr 2026 17:11:35 +0000 (20:11 +0300)]
spec : fix vocab compat checks (#22358)

4 months agoCUDA: reduce MMQ stream-k overhead (#22298)
Johannes Gäßler [Sat, 25 Apr 2026 12:15:03 +0000 (14:15 +0200)]
CUDA: reduce MMQ stream-k overhead (#22298)

* CUDA: reduce MMQ stream-k overhead

* use 32 bit integers for kbc

4 months agometal : optimize Metal Tensor API usage for GGML_OP_MUL_MAT (#20962)
Developer-Ecosystem-Engineering [Sat, 25 Apr 2026 12:14:28 +0000 (05:14 -0700)]
metal : optimize Metal Tensor API usage for GGML_OP_MUL_MAT (#20962)

* Optimize Metal Tensor API usage for matmul2d

Separates the Metal Tensor API (matmul2d) path in kernel_mul_mm into its own standalone kernel, gated by GGML_METAL_HAS_TENSOR.

The legacy simdgroup_matrix kernel is preserved under #else.

Previously both paths were interleaved via #ifdef blocks within a single kernel, forcing the tensor path to share the legacy kernel's data layout and threadgroup memory scheme. Splitting the kernel enabled memory and dispatch optimizations that weren't possible when the two paths shared code structure.

* cont : cleanup

* cont : cleanup

* cont : cleanup

---------

Co-authored-by: Georgi Gerganov <redacted>
4 months agollama-quant : default ftype param `Q5_1` --> `Q8_0` (#20828)
ddh0 [Sat, 25 Apr 2026 06:25:35 +0000 (01:25 -0500)]
llama-quant : default ftype param `Q5_1` --> `Q8_0` (#20828)

Change the default `ftype` in `llama_model_quantize_params` from
`LLAMA_FTYPE_MOSTLY_Q5_1` to `LLAMA_FTYPE_MOSTLY_Q8_0`.

In case some external program naively uses the default quantization
params, we should probably default to a known-good type like Q8_0 rather
than Q5_1, which is rather old.

4 months agogitignore : add .pi + personal SYSTEM.md (#22316)
Georgi Gerganov [Sat, 25 Apr 2026 06:20:45 +0000 (09:20 +0300)]
gitignore : add .pi + personal SYSTEM.md (#22316)

* gitignore : add .pi + personal SYSTEM.md

* cont : fix requirements heading in PR template

* cont : shorten line

4 months ago[SYCL] Optimize Q4_0 mul_mat for Arc770, add scripts (#22291)
Neo Zhang [Sat, 25 Apr 2026 06:20:14 +0000 (14:20 +0800)]
[SYCL] Optimize Q4_0 mul_mat for Arc770, add scripts (#22291)

* opt arc770 for Q4_0

* add for Q4_0

* update the script

* add help script for windows

* update guide

* fix format issue

* convert from dos to unix for format issue

* fix missed -sm parameter

4 months agoggml-webgpu: support for SSM_SCAN and disable set_rows error checking (#22327)
Reese Levine [Sat, 25 Apr 2026 06:18:15 +0000 (23:18 -0700)]
ggml-webgpu: support for SSM_SCAN and disable set_rows error checking (#22327)

* Implement ssm_scan

* Remove blocking in graph_compute and check for set rows

* Fix bindings

* Update op support

4 months agoparser: fix structured output bug (#22302)
Piotr Wilkin (ilintar) [Fri, 24 Apr 2026 21:19:55 +0000 (23:19 +0200)]
parser: fix structured output bug (#22302)

* fix very stupid structured output bug

* Things just cannot be too easy.

4 months agoHexagon: Bump HMX Frequency to Max Corner (#22334)
Trivikram Reddy [Fri, 24 Apr 2026 20:55:17 +0000 (15:55 -0500)]
Hexagon: Bump HMX Frequency to Max Corner (#22334)

* hexagon: bump HMX freq to max corner

* hex-mm: fix error in log msg

4 months agoCI Snapdragon: Switch ubuntu-latest to ubuntu-slim runner (#22303)
Shreya Jain [Fri, 24 Apr 2026 19:21:36 +0000 (12:21 -0700)]
CI Snapdragon: Switch ubuntu-latest to ubuntu-slim runner (#22303)

* switch ubuntu-latest to ubuntu-slim

* Fix the path for upload so CI doesn't fail

* Update .github/workflows/build-and-test-snapdragon.yml

Co-authored-by: Sigbjørn Skjæret <redacted>
* Use -slim image for key check and consistent naming for artifact dir

Signed-off-by: Max Krasnyansky <redacted>
* Remove check-secret extra job

* move QDC key check for Run QDC jobs step specifically

* add a step before to check the secret for qdc jobs

---------

Signed-off-by: Max Krasnyansky <redacted>
Co-authored-by: Max Krasnyansky <redacted>
Co-authored-by: Sigbjørn Skjæret <redacted>
4 months agoggml-webgpu: enable FLASH_ATTN_EXT on browser without subgroup matrix (#22199)
Zheyuan Chen [Fri, 24 Apr 2026 17:39:09 +0000 (10:39 -0700)]
ggml-webgpu: enable FLASH_ATTN_EXT on browser without subgroup matrix  (#22199)

* ggml-webgpu: add tile flash attention fallback

* ggml-webgpu: add new fields and discard usage of mnk for tile version

* ggml-webgpu: modify the vec path to discard the mnk parameter

* ggml-webgpu: enable flash attention vec and tile version for broswer

* ggml-webgpu: stagging KV for flash attention tile version

* formatting

* turn on subgroup uniformity check

* remove Q_TILE as it is always 1 for vec path

* make row_max and exp_sum to local register

* make different bindings with same underlying buffer to have the same usage flags

* move path selection into the shader library and have the host consume a single flash-attn decision object.

* turn off skip_validation and address buffer overlapping when nwg==1

* formatting

* merge binding when kv overlap

4 months agohexagon: use DIRID 13 in libggml-htp.inf for modern InfVerif (#22306)
Mengsheng Wu [Fri, 24 Apr 2026 16:21:33 +0000 (00:21 +0800)]
hexagon: use DIRID 13 in libggml-htp.inf for modern InfVerif (#22306)

4 months agometal : print GPU description (#22318)
Georgi Gerganov [Fri, 24 Apr 2026 10:56:03 +0000 (13:56 +0300)]
metal : print GPU description (#22318)

4 months agocommon : fix jinja warnings with clang 21 (#22313)
Adrien Gallouët [Fri, 24 Apr 2026 10:36:02 +0000 (12:36 +0200)]
common : fix jinja warnings with clang 21 (#22313)

Signed-off-by: Adrien Gallouët <redacted>
4 months agoggml : minor coding style (#22308)
Georgi Gerganov [Fri, 24 Apr 2026 08:02:00 +0000 (11:02 +0300)]
ggml : minor coding style (#22308)

4 months agojinja : remove unused header (#22310)
Georgi Gerganov [Fri, 24 Apr 2026 08:01:46 +0000 (11:01 +0300)]
jinja : remove unused header (#22310)

4 months agoserver : fix swa-full logic (#22288)
Georgi Gerganov [Fri, 24 Apr 2026 07:17:37 +0000 (10:17 +0300)]
server : fix swa-full logic (#22288)

4 months agoserver: rename debug tags to match --cache-idle-slots naming (#22292)
Yes You Can Have Your Own [Fri, 24 Apr 2026 06:28:44 +0000 (09:28 +0300)]
server: rename debug tags to match --cache-idle-slots naming (#22292)

4 months agohexagon: add SOLVE_TRI op (#21974)
Mengsheng Wu [Fri, 24 Apr 2026 01:39:13 +0000 (09:39 +0800)]
hexagon: add SOLVE_TRI op (#21974)

* hexagon: add SOLVE_TRI op

* ggml: fix TODO description for solve_tri

* hexagon: rm unused variable/function warnings

* hexagon: chunk vs batch processingfor better thread utilization

* hexagon: vectorize partial f32 loads

* hexagon: move HVX f32 add/sub/mul wrappers to hvx-base.h

---------

Co-authored-by: Todor Boinovski <redacted>
4 months agofix(shader): handle the buffer aliasing for rms fuse (#22266)
Chen Yuan [Thu, 23 Apr 2026 23:32:59 +0000 (19:32 -0400)]
fix(shader): handle the buffer aliasing for rms fuse (#22266)

4 months agocli: Remove redundant local sampling variables (#20429) (#22264)
Ethan Turner [Thu, 23 Apr 2026 22:53:23 +0000 (15:53 -0700)]
cli: Remove redundant local sampling variables (#20429) (#22264)

This change implements the third requested change in issue 20429.
Because defaults.sampling contains the reasoning budget token count and
the reasoning budget message, it's not necessary to assign them to
struct variables.

4 months agohexagon: add support for basic and extended Op profiling (#22269)
Max Krasnyansky [Thu, 23 Apr 2026 21:17:21 +0000 (14:17 -0700)]
hexagon: add support for basic and extended Op profiling  (#22269)

* hexagon: restore HTP_OPMASK_QUEUE

* hexagon: honor OPMASK_SKIP_COMPUTE in hmx-matmul

* hex-prof: restore op profiling

* hex-prof: enable PMU

* hexagon: simplify and improve op-queuing with full profiling support

Add separate profile descriptors.

* hexagon: remove opsync and rename opmask into opstage

opsync is no longer needed since the profiler is fully async now.
opmask name was confusing and opstage is more accurate.

* hexagon: refactor opbatch queue handling

* hexagon: add iface hooks for enabling profiler from the host

Also move all the PMU setup stuff out of the hex-utils since it's not inteded for normal use.

* hexagon: make profiler mode configurable

On older devices getting PMU counters is expensive so it's now optional.

* hexagon: add support for setting profiler pmu events from env

* hexagon: simplify profiler output (no need to print buffs, etc)

* hexagon: simplify pmu counter formating

* hexagon: add a simple profile post-proc tool

* hex-prof: add support for reading logs from stdin

* hexagon: document GGML_HEXAGON_PROFILE

* hex-prof: update default width for dims field

* hex-prof: fix linter warnings and errors

* Update ggml/src/ggml-hexagon/htp/htp-ops.h

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update scripts/snapdragon/ggml-hexagon-profile.py

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Co-authored-by: Trivikram Reddy <redacted>
Co-authored-by: Sigbjørn Skjæret <redacted>
4 months agoEnable testing on Snapdragon devices (#21051)
Shreya Jain [Thu, 23 Apr 2026 20:08:10 +0000 (13:08 -0700)]
Enable testing on Snapdragon devices (#21051)

* Add the tests that we want to run on external CI

* remove extra files

* Fixes python issues, reove the deadlock on CI

* remove unecessary changes

* use override to ty.toml

* fix pre-commit and try tests with secret in external repo not upstream

* skip if key is unavailable

* Fix feedback

* switch hexagon to snapdragon

* cleanup

* fix secrets

* remove the copyrights at the top of the files

4 months agoserver : convert_anthropic_to_oai: also copy chat_template_kwargs (#22154)
srkizer [Thu, 23 Apr 2026 18:32:46 +0000 (03:32 +0900)]
server : convert_anthropic_to_oai: also copy chat_template_kwargs (#22154)

4 months agoserver: fix heap-buffer-overflow from negative n_discard (CVE-2026-21869) (#22267)
Song Li [Thu, 23 Apr 2026 16:39:07 +0000 (12:39 -0400)]
server: fix heap-buffer-overflow from negative n_discard (CVE-2026-21869) (#22267)

* server: clamp n_discard to non-negative at JSON parse boundary (CVE-2026-21869)

A negative n_discard from client JSON causes heap-buffer-overflow in
update_slots() context-shift loop (CWE-787, CVSS 8.8). Clamp to 0 at
ingress; n_discard=0 already triggers auto-discard (n_left/2).

Ref: GHSA-8947-pfff-2f3c

* cont : cleaner

* cont : cleanerer

* cont : cleanest

---------

Co-authored-by: Georgi Gerganov <redacted>
4 months agovendor : update LibreSSL to 4.3.1 (#22285)
Adrien Gallouët [Thu, 23 Apr 2026 15:45:56 +0000 (17:45 +0200)]
vendor : update LibreSSL to 4.3.1 (#22285)

Signed-off-by: Adrien Gallouët <redacted>
4 months agoserver: (anthropic API) fix prefix caching (#21793)
kvc0 [Thu, 23 Apr 2026 15:45:02 +0000 (08:45 -0700)]
server: (anthropic API) fix prefix caching (#21793)

When testing claude code against llama.cpp, I noticed that only
n_past 18577 was used even when context was 60k or more. The log
in llama-server says:
```
slot update_slots: id  3 | task 10342 | old: ... ; cch= | defa0;You are
slot update_slots: id  3 | task 10342 | new: ... ; cch= | 1c8b4;
```
I observed that the cch value changed every time. Reading about that,
the x-anthropic-billing-header system message seems to be specially
handled inside of the anthropic api. I could remove it, but there
is a meaningful string sometimes included at the end. So instead,
I just replace the changing cch checksum with fffff.

I'm treating this as an anthropic message body API detail - I think this
is the right way to do this, but by all means please correct me!

It's always 5 hexadecimal characters, but I've written the replacement
defensively in case they change the protocol.

4 months agofix build number for sycl release (#22283)
Sigbjørn Skjæret [Thu, 23 Apr 2026 13:38:58 +0000 (15:38 +0200)]
fix build number for sycl release (#22283)

4 months agomodel-conversion : fix mmproj output file name [no ci] (#22274)
Daniel Bevenius [Thu, 23 Apr 2026 13:07:38 +0000 (15:07 +0200)]
model-conversion : fix mmproj output file name [no ci] (#22274)

* model-conversion : fix mmproj output file name [no ci]

This commit updates the convert-model.sh script to properly handle
mmproj output files.

The motivation for this that currently the same name as the original
model is used as the mmproj file, which causes the original model to
be overwritten and no mmproj-<model_name>.gguf to be created.

* model-conversion : use MODEL_NAME [no ci]

4 months agocli : cleanup auto-completion code (#21745)
Matthias Straka [Thu, 23 Apr 2026 13:03:28 +0000 (15:03 +0200)]
cli : cleanup auto-completion code (#21745)

4 months agoserver: Enable transcriptions API for LFM2-Audio (#22000)
Tarek Dakhran [Thu, 23 Apr 2026 08:47:26 +0000 (10:47 +0200)]
server: Enable transcriptions API for LFM2-Audio (#22000)

4 months agometal : fix event synchronization (#22260)
Georgi Gerganov [Thu, 23 Apr 2026 05:22:49 +0000 (08:22 +0300)]
metal : fix event synchronization (#22260)

4 months agogitignore: add AGENTS.local.md (#22246)
Georgi Gerganov [Thu, 23 Apr 2026 05:22:24 +0000 (08:22 +0300)]
gitignore: add AGENTS.local.md (#22246)

* gitignore: add AGENTS.local

Assisted-by: llama.cpp:local pi
Signed-off-by: Georgi Gerganov <redacted>
* gitignore: rename AGENTS.local to AGENTS.local.md

Assisted-by: llama.cpp:local pi
Signed-off-by: Georgi Gerganov <redacted>
---------

Signed-off-by: Georgi Gerganov <redacted>
4 months agoggml-base: use MATH_LIBRARY variable instead of hardcoded 'm' (#22239)
Georgi Gerganov [Thu, 23 Apr 2026 05:22:08 +0000 (08:22 +0300)]
ggml-base: use MATH_LIBRARY variable instead of hardcoded 'm' (#22239)

Fixes #22237 — the find_library(MATH_LIBRARY m) result was being
discarded and the target linked against the literal 'm' string.

This prevents users from overriding the math library (e.g. for AMD AOCL)
via CMake variables. Now the discovered MATH_LIBRARY is used directly.

4 months ago[SYCL] Update oneapi 2025.3.3, Seperate SYCL build, release Ubuntu 24 package. (...
Neo Zhang Jianyu [Thu, 23 Apr 2026 05:21:36 +0000 (13:21 +0800)]
[SYCL] Update oneapi 2025.3.3, Seperate SYCL build, release Ubuntu 24 package. (#22078)

* upgrade oneAPI to 2025.3.3

* update

* seperate SYCL CI and support release binary package for ubuntu 24

* add dependence

* remove wrong copy lines

* add missed line

* remove other task to test the release for SYCL

* rm more for test release

* fix file name

* correct the error in running

* support build for fp32/fp16

* rm ubuntu-24-sycl-fp16 for duplicated

* refactor build setting

* update guide for ubuntu 24 release package, restore the release.yml for other backend

* user docker replace to install oneAPI

* use download installation package to replace docker

* use wget to download and install oneapi, replace the apt cmd

* enable ccache for oneAPI installation

* fix format error

* enable cache for oneAPI installation

* update guide

* Update .github/workflows/release.yml

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update .github/workflows/release.yml

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update .github/workflows/build-sycl.yml

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update .github/workflows/release.yml

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Co-authored-by: Sigbjørn Skjæret <redacted>
4 months agoconvert : Handle ModelOpt produced mixed precision model during convert to GGUF ...
ynankani [Thu, 23 Apr 2026 05:19:51 +0000 (05:19 +0000)]
convert : Handle ModelOpt produced mixed precision model during convert to GGUF (#22247)

* Handle ModelOpt produced mixed precision model during convert to GGUF

* Apply suggestions from code review

Co-authored-by: Sigbjørn Skjæret <redacted>
* Apply suggestions from code review

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Co-authored-by: Sigbjørn Skjæret <redacted>
4 months agosycl : fused MoE mul_mat_vec_q for TG (#21920)
abotsis [Thu, 23 Apr 2026 05:18:56 +0000 (23:18 -0600)]
sycl : fused MoE mul_mat_vec_q for TG (#21920)

* sycl : fused MoE mul_mat_vec_q for TG

Create an MMVQ kernel so ggml_sycl_mul_mat_id can consolidate
n_experts_used matmuls in a single kernel launch. The kernel
also reads expert IDs directly, removing a per-call host sync.

This is similar to the CUDA backend's ggml_cuda_mul_mat_vec_q*
paths.

All types supported in the current MMVQ are supported here as well:
Q2_K, Q3_K, Q4_K, Q5_K, Q6_K, Q4_0, Q4_1, Q5_0, Q5_1, Q8_0

It will fall back to the existing per-expert path when src0 has been rewritten
by opt_for_reorder(), and for any shape the fused path doesn't handle.

test-backend-ops passes for supported type/shape combos.

Benchmark: Qwen3-Next-35B-A3B Q4_K_M on Intel Arc B70 (SYCL0),
baseline 707c0b7a6, 16k context, -fa 0.

  build/bin/llama-bench -hf unsloth/Qwen3.5-35B-A3B-GGUF:Q4_K_M \
    -p 1024 -n 128 -d 16384 -ngl 99 -fa 0 -ub 2048 -r 2 -dev SYCL0

Before (3 runs on 707c0b7a6):

  | test            |            run 1 |            run 2 |            run 3 |
  | --------------- | ----------------:| ----------------:| ----------------:|
  | pp1024 @ d16384 |   533.26 ±  4.87 |   535.20 ±  2.78 |   524.27 ±  3.10 |
  | tg128  @ d16384 |    33.47 ±  0.02 |    33.31 ±  0.02 |    33.17 ±  0.05 |

After (3 runs on 707c0b7a6 + this patch):

  | test            |            run 1 |            run 2 |            run 3 |
  | --------------- | ----------------:| ----------------:| ----------------:|
  | pp1024 @ d16384 |   534.06 ±  0.97 |   531.95 ±  0.02 |   520.94 ± 20.10 |
  | tg128  @ d16384 |    45.85 ±  0.21 |    45.95 ±  0.45 |    46.22 ±  0.12 |

disclosure: Claude wrote it, but I reviewed and understand the implementation
(albeit my C is a little rusty).

* sycl: also support nvfp4 and mxfp4 expert types

* sycl: terser comments/nested dispatch in response to review

* sycl: more comment cleanup in mmvq.cpp/hpp

---------

Co-authored-by: Debian <redacted>
4 months agoggml-webgpu: add support for im2col (#22259)
Chen Yuan [Thu, 23 Apr 2026 03:17:41 +0000 (23:17 -0400)]
ggml-webgpu: add support for im2col (#22259)

* shader(im2col): implement the im2col shader

* shader(im2col): clean the formatting issues

* shader(im2col): clean the editorconfig checker warning

* fix(shader): address the workgroup issues of im2col and conv2d

4 months agoCUDA: fuse relu + sqr (#22249)
Anav Prasad [Thu, 23 Apr 2026 02:28:56 +0000 (02:28 +0000)]
CUDA: fuse relu + sqr (#22249)