Fixed scalar ggml_vec_cvar_f32 #3477
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello @ggerganov, @taronaeo,
While upgrading from whisper.cpp v1.8.0 → v1.8.1, I noticed that the non-SIMD (scalar) code path started producing incorrect results in whisper.net CI.
The last successful run was just before commit d83fef35, which introduced the new
ggml_vec_cvar_f32
optimization (llama.cpp PR #15953).After this change, the scalar branch wrote the squared residuals into
y[i]
instead of the centered values.This caused normalization in
ggml_compute_forward_norm_f32
to divide(x − mean)²
by√(var + eps)
instead of(x − mean)
, producing invalid activations (resulting in-inf
logits and!!!!!!
transcriptions).The SIMD branches (AVX/SSE/NEON/VXE) were unaffected because they correctly stored the centered values before squaring for the sum.
This PR restores the correct behavior for the scalar path:
Verified in this pipeline run — whisper.net now produces expected transcriptions again.