From: Jeff Bolz Date: Tue, 24 Feb 2026 06:43:12 +0000 (-0600) Subject: vulkan: fix data race in mul_mat_id shader (llama/19790) X-Git-Tag: v0.9.8~111 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=037fdb12bd1283d48fcb855581518a7b256f7f99;p=pkg%2Fggml%2Fsources%2Fggml vulkan: fix data race in mul_mat_id shader (llama/19790) --- diff --git a/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp b/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp index 717d124e..497a18ff 100644 --- a/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +++ b/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp @@ -167,7 +167,9 @@ void load_row_ids(uint expert_idx, bool nei0_is_pow2, uint ic) { uint id = ids[iter++]; uvec4 ballot = subgroupBallot(in_range && id == expert_idx); - ballots_sh[gl_SubgroupID] = ballot; + if (gl_SubgroupInvocationID == 0) { + ballots_sh[gl_SubgroupID] = ballot; + } barrier(); uint subgroup_base = 0; diff --git a/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl b/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl index 743004ff..26c5c12a 100644 --- a/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl +++ b/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl @@ -43,7 +43,9 @@ void load_row_ids(uint expert_idx, bool nei0_is_pow2, uint ic) { uint id = ids[iter++]; uvec4 ballot = subgroupBallot(in_range && id == expert_idx); - ballots_sh[gl_SubgroupID] = ballot; + if (gl_SubgroupInvocationID == 0) { + ballots_sh[gl_SubgroupID] = ballot; + } barrier(); uint subgroup_base = 0;