]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
kleidiai: add data type check to get_tensor_traits (#20639)
authorMartin Klacer <redacted>
Mon, 16 Mar 2026 19:25:54 +0000 (19:25 +0000)
committerGitHub <redacted>
Mon, 16 Mar 2026 19:25:54 +0000 (21:25 +0200)
* kleidiai: add data type check to get_tensor_traits

 * Added check for F16 data type into get_tensor_traits path with input data
   not in ggml_backend_cpu_kleidiai_buffer_type format (unsupported for Q4/8)

Signed-off-by: Martin Klacer <redacted>
Change-Id: I9aca4b9b8d669d35db6f1dbcc4e080b1919b1de7

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

updated kleidiai.cpp file as per suggestion

Co-authored-by: Georgi Gerganov <redacted>
---------

Signed-off-by: Martin Klacer <redacted>
Co-authored-by: Georgi Gerganov <redacted>
ggml/src/ggml-cpu/kleidiai/kleidiai.cpp

index 9bcc18d442c1fc055318b3e9d8bae3f8aa901d93..7a5924944a89cb3c3c4c2972d85cace6ca75a3b7 100644 (file)
@@ -1473,10 +1473,12 @@ class extra_buffer_type : ggml::cpu::extra_buffer_type {
             if (op->src[0]->buffer && op->src[0]->buffer->buft == ggml_backend_cpu_kleidiai_buffer_type()) {
                 return (ggml::cpu::tensor_traits *) op->src[0]->extra;
             } else {
+                if (op->src[0]->type != GGML_TYPE_F16) {
+                    return nullptr;
+                }
                 std::array<ggml_kleidiai_kernels *, GGML_KLEIDIAI_MAX_KERNEL_SLOTS> kernel_chain;
                 const int slot_total = kleidiai_collect_kernel_chain(op, kernel_chain);
-                const bool has_kernel = slot_total > 0;
-                if (has_kernel && op->src[1]->ne[1] > 1) {
+                if (slot_total > 0 && op->src[1]->ne[1] > 1) {
                     if ((op->src[0]->nb[1] * op->src[0]->ne[1] != op->src[0]->nb[2]) ||
                         (op->src[1]->nb[1] * op->src[1]->ne[1] != op->src[1]->nb[2])) {
                         return nullptr;