]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commit
cuda: align snake fusion matcher with the other backends (#25460)
authorPascal <redacted>
Thu, 9 Jul 2026 08:00:06 +0000 (10:00 +0200)
committerGitHub <redacted>
Thu, 9 Jul 2026 08:00:06 +0000 (11:00 +0300)
commit2021515a1a7ccbb8a7b5e83273164fab835e6b12
tree9f002be14d6be0a1711ab6ee351fa3f51032fa39
parent64c8b7db72fbd871512b371b5c141c00fd0a8ba6
cuda: align snake fusion matcher with the other backends (#25460)

* cuda: fix snake fusion type predicate, a and inv_b are F32

The matcher required a->type == x->type while launch_snake reads both
as const float *, matching the CPU and Metal contract where a and inv_b
stay F32. F16/BF16 chains never fused and fell back to the naive path,
and a hypothetical all F16 chain would have read F16 bits as float.
Aligns the predicate and the comment with ggml-cpu.c

* cuda: reject snake fusion on non-contiguous operands

The kernel reads x[idx] and a[c] / inv_b[c] linearly, so a
non-contiguous view passing the matcher would silently read wrong data.
Mirror the contiguity guard already present in the CPU, Vulkan and
Metal matchers.
ggml/src/ggml-cuda/ggml-cuda.cu