diff options
Diffstat (limited to 'vulkan-shaders/mul_mat_split_k_reduce.comp')
-rw-r--r-- | vulkan-shaders/mul_mat_split_k_reduce.comp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/vulkan-shaders/mul_mat_split_k_reduce.comp b/vulkan-shaders/mul_mat_split_k_reduce.comp new file mode 100644 index 00000000..825b9103 --- /dev/null +++ b/vulkan-shaders/mul_mat_split_k_reduce.comp @@ -0,0 +1,29 @@ +#version 450 + +#extension GL_EXT_control_flow_attributes : enable + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +layout (binding = 0) readonly buffer A {float data_a[];}; +layout (binding = 1) writeonly buffer D {float data_d[];}; + +layout (push_constant) uniform parameter { + uint ne; + uint k_num; +} p; + +void main() { + const uint idx = gl_GlobalInvocationID.x; + + if (idx >= p.ne) { + return; + } + + float result = 0.0f; + + [[unroll]] for (uint i = 0; i < p.k_num; i++) { + result += data_a[i * p.ne + idx]; + } + + data_d[idx] = result; +} |