]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commit
ggml-cpu : fix leftover handling in ggml_vec_scale_f32 for SVE (llama/16443)
authorDaniel Bevenius <redacted>
Mon, 6 Oct 2025 12:17:12 +0000 (14:17 +0200)
committerGeorgi Gerganov <redacted>
Sun, 12 Oct 2025 08:16:23 +0000 (11:16 +0300)
commit0f29d7c3fa1762e65ee96ee121b983c48ee26f0e
treec79e5065d0994832ae8ac9dd926bc2fffeac59e8
parentb8bdf061829942e7843e74e0988ed0e417ae10f1
ggml-cpu : fix leftover handling in ggml_vec_scale_f32 for SVE (llama/16443)

This commit updates the leftover handling in ggml_vec_scale_f32.

The motivation for this is that the code currently incorrectly assumes
there would be fewer than ggml_f32_epr leftover elements. However,
since the main loop processes 2*ggml_f32_epr elements per iteration
, there can be up to (2*ggml_f32_epr - 1) leftover elements.

The original single-pass leftover code could only process ggml_f32_epr
elements, leaving some elements unscaled.

Example scenario with 256-bit SVE:
```
ggml_f32_epr  = 8 (elements per register)
ggml_f32_step = 16 (two registers per iteration)
n             = 25
np            = 16
leftovers     = 9 elements (16-24)

Original    : processes only elements 16-23, misses element 24
This commit : loop processes elements 16-23, then element 24
```

Refs: https://github.com/ggml-org/llama.cpp/actions/runs/18070620247/job/51419855630
ggml/src/ggml-cpu/vec.h