From 5cdadfc326163ed1fa66cf609fb1761f7928900c Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Wed, 14 Oct 2026 21:01:53 +0530 Subject: [PATCH] ggml-cpu : size set_rows conversion buffer for all threads (#30454) * ggml-cpu : size set_rows conversion buffer for all threads SET_ROWS is planned with n_tasks = 1, but every thread runs it and uses its own row of the F16 -> F32 conversion buffer, so threads > 0 wrote past the work buffer when the graph had another multi-threaded op. * move set_rows to n_task = n_threads group --- ggml/src/ggml-cpu/ggml-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ggml/src/ggml-cpu/ggml-cpu.c b/ggml/src/ggml-cpu/ggml-cpu.c index 5428d5164..ab82e3d6c 100644 --- a/ggml/src/ggml-cpu/ggml-cpu.c +++ b/ggml/src/ggml-cpu/ggml-cpu.c @@ -2360,11 +2360,11 @@ static int ggml_get_n_tasks(struct ggml_tensor * node, int n_threads) { case GGML_OP_MUL_MAT: case GGML_OP_MUL_MAT_ID: case GGML_OP_OUT_PROD: + case GGML_OP_SET_ROWS: { n_tasks = n_threads; } break; case GGML_OP_GET_ROWS: - case GGML_OP_SET_ROWS: { // FIXME: get_rows can use additional threads, but the cost of launching additional threads // decreases performance with GPU offloading