From 630c84a2bde574fec0798c2b3fdbd982892040f5 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sun, 22 Jun 2025 11:10:42 +0300 Subject: [PATCH] ggml : ggml_set_rows support quantized dst ggml-ci --- ggml/src/ggml-cpu/ops.cpp | 6 ++++-- ggml/src/ggml.c | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ggml/src/ggml-cpu/ops.cpp b/ggml/src/ggml-cpu/ops.cpp index 1c8bdfbcef..e9832f8dee 100644 --- a/ggml/src/ggml-cpu/ops.cpp +++ b/ggml/src/ggml-cpu/ops.cpp @@ -4549,6 +4549,8 @@ static void ggml_compute_forward_set_rows_f32( const int ir0 = dr*ith; const int ir1 = MIN(ir0 + dr, nr); + ggml_from_float_t const from_float = ggml_get_type_traits_cpu(dst->type)->from_float; + for (int64_t i03 = 0; i03 < ne03; ++i03) { for (int64_t i02 = 0; i02 < ne02; ++i02) { for (int64_t i = ir0; i < ir1; ++i) { @@ -4560,9 +4562,9 @@ static void ggml_compute_forward_set_rows_f32( GGML_ASSERT(i01 >= 0 && i01 < ne1); - ggml_cpu_fp32_to_fp16( + from_float( (const float *) ((char *) src0->data + i*nb01 + i02*nb02 + i03*nb03), - (ggml_fp16_t *) ((char *) dst->data + i01*nb1 + i02*nb2 + i03*nb3), nc); + ((char *) dst->data + i01*nb1 + i02*nb2 + i03*nb3), nc); } } } diff --git a/ggml/src/ggml.c b/ggml/src/ggml.c index 12d9ad70ac..2b69f70cff 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -3417,7 +3417,6 @@ struct ggml_tensor * ggml_set_rows( GGML_ASSERT(b->ne[2] % c->ne[1] == 0); GGML_ASSERT(b->ne[3] % c->ne[2] == 0); GGML_ASSERT(c->ne[3] == 1); - GGML_ASSERT(a->type == GGML_TYPE_F16); // TODO: relax GGML_ASSERT(b->type == GGML_TYPE_F32); GGML_ASSERT(c->type == GGML_TYPE_I64);