]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
kleidiai : fix MUL_MAT support for batched (3D) inputs (#20620)
authorJustin Bradford <redacted>
Tue, 17 Mar 2026 12:03:54 +0000 (05:03 -0700)
committerGitHub <redacted>
Tue, 17 Mar 2026 12:03:54 +0000 (14:03 +0200)
* kleidiai : fix MUL_MAT support for batched (3D) inputs

The supports_op() check incorrectly rejected MUL_MAT operations with 3D
inputs (ne[2] > 1), but the actual compute_forward_qx() implementation
handles batched inputs correctly via a loop over ne12.

This caused models with Q4_0/Q8_0 weights to crash during graph scheduling
when n_seq_max > 1, because weights were placed in KLEIDIAI buffers during
loading (tested with 2D inputs) but the runtime used 3D inputs.

Also relax the buffer check to allow supports_op() to be called during
weight loading when src[0]->buffer is NULL.

Fixes #20608

* Kleidiai support_ops should only return true for 3D inputs, not also 4D

ggml/src/ggml-cpu/kleidiai/kleidiai.cpp

index 7a5924944a89cb3c3c4c2972d85cace6ca75a3b7..0ecf7ae02ac73d9f43fc07d4c919fd71e6c6e4c0 100644 (file)
@@ -1461,7 +1461,7 @@ class extra_buffer_type : ggml::cpu::extra_buffer_type {
                 return false;
             }
             if ((op->src[1]->type == GGML_TYPE_F32 || op->src[1]->type == GGML_TYPE_I32) &&
-                ggml_ne(op->src[1], 2) == 1 && ggml_ne(op->src[1], 3) == 1) {
+                ggml_ne(op->src[1], 3) == 1) {
                 return true;
             }
         }