From: Jeff Bolz Date: Fri, 3 Oct 2025 09:52:46 +0000 (-0500) Subject: vulkan: Fix FA coopmat1 invalid array indexing (llama/16365) X-Git-Tag: upstream/1.8.2~51 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=90bdcf2ef62b5f5bbd2d003e857392c51e496a5e;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp vulkan: Fix FA coopmat1 invalid array indexing (llama/16365) When computing sinks, the cm1 shader was looping r from 0 to Br rather than to rows_per_thread. I must have copied this from the scalar path (where it is correct), and somehow it wasn't causing failures on current drivers. --- diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp index e76dbb4d..0507df2d 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp @@ -358,8 +358,8 @@ void main() { } if ((p.mask_n_head_log2 & SINK_ENABLE_BIT) != 0) { - [[unroll]] for (uint32_t r = 0; r < Br; ++r) { - float sink = perElemOpGetSink(r, 0u, ACC_TYPE(0), iq2); + [[unroll]] for (uint32_t r = 0; r < rows_per_thread; ++r) { + float sink = perElemOpGetSink(tile_row(r), 0u, ACC_TYPE(0), iq2); float ms = 1.0f; float vs = 1.0f;