mul_mat_split_k_reduce.comp 592 B

1234567891011121314151617181920212223242526272829
  1. #version 450
  2. #extension GL_EXT_control_flow_attributes : enable
  3. layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in;
  4. layout (binding = 0) readonly buffer A {float data_a[];};
  5. layout (binding = 1) writeonly buffer D {float data_d[];};
  6. layout (push_constant) uniform parameter {
  7. uint ne;
  8. uint k_num;
  9. } p;
  10. void main() {
  11. const uint idx = gl_GlobalInvocationID.x;
  12. if (idx >= p.ne) {
  13. return;
  14. }
  15. float result = 0.0f;
  16. [[unroll]] for (uint i = 0; i < p.k_num; i++) {
  17. result += data_a[i * p.ne + idx];
  18. }
  19. data_d[idx] = result;
  20. }