]> git.djapps.eu Git - pkg/ggml/sources/ggml/commitdiff
ggml-cpu : fix padding in ggml_timestep_embedding (llama/15917)
authorDaniel Bevenius <redacted>
Wed, 10 Sep 2025 15:31:40 +0000 (17:31 +0200)
committerGeorgi Gerganov <redacted>
Sat, 20 Sep 2025 10:33:50 +0000 (13:33 +0300)
This commit fixes the zero padding for odd dimensions in
ggml_compute_forward_timestep_embedding_f32.
The motivation for this is that currently if an odd dimension is used,
the padding check incorrectly uses the dimension value for indexing.
For example, with dim=15:

Elements 0-6 are set to cosine values
Elements 7-13 are set to sine values
Element 14 is left uninitialized (contains garbage)
Element 15 is correctly set to zero

This fix changes embed_data[dim] to embed_data[2 * half] so that
element 14 (the first unused element) is properly set to zero as well
as the last element.

Resolves: https://github.com/ggml-org/ggml/issues/1324

src/ggml-cpu/ops.cpp

index 9adf910769f8ecafc1a1c270ce9d3d22181beeba..212e52ef6a1c843fec010b49a8ac9ce9a89f0e4e 100644 (file)
@@ -8598,6 +8598,7 @@ static void ggml_compute_forward_timestep_embedding_f32(
             embed_data[j + half] = sinf(arg);
         }
         if (dim % 2 != 0 && ith == 0) {
+            embed_data[2 * half] = 0.f;
             embed_data[dim] = 0.f;
         }
     }