Commit 5cdadfc32 for llama.cpp
commit 5cdadfc326163ed1fa66cf609fb1761f7928900c
Author: Aman Gupta <amangupta052@gmail.com>
Date: Wed Oct 14 21:01:53 2026 +0530
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
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