diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 633f39df55..56fbb8b70b 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -5881,7 +5881,7 @@ static void ggml_vk_load_shaders(vk_device& device, vk_pipeline requested) { for (ggml_type k_type : lightning_indexer_k_types) { const std::string name = "lightning_indexer_" + std::string(ggml_type_name(k_type)) + "_k_f32"; - ggml_vk_create_pipeline(device, device->pipeline_lightning_indexer_f32[k_type], name.c_str(), li_len, li_data, "main", 5, sizeof(vk_op_lightning_indexer_push_constants), {1, 1, 1}, {(uint32_t)k_type, fa_block_bytes(k_type), device->subgroup_size}, 1, false, li_subgroup); + ggml_vk_create_pipeline(device, device->pipeline_lightning_indexer_f32[k_type], name.c_str(), li_len, li_data, "main", 5, sizeof(vk_op_lightning_indexer_push_constants), {1, 1, 1}, {(uint32_t)k_type, fa_block_bytes(k_type), device->subgroup_size}, 1, true, li_subgroup); } } diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/lightning_indexer.comp b/ggml/src/ggml-vulkan/vulkan-shaders/lightning_indexer.comp index 10680f6019..1478d2af49 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/lightning_indexer.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/lightning_indexer.comp @@ -102,9 +102,11 @@ void main() { } barrier(); + const float k_val = k_row[tid]; + float score = 0.0; for (uint h = 0; h < n_heads; ++h) { - const float prod = q[h * q_nb1 + t * q_nb2 + s * q_nb3 + tid] * k_row[tid]; + const float prod = q[h * q_nb1 + t * q_nb2 + s * q_nb3 + tid] * k_val; #if USE_SUBGROUP_ADD const float sg_sum = subgroupAdd(prod);