alias number = f32; struct MatrixBatch { size: vec4, data: array>, } struct Matrix { size: vec4, data: array>, } @group(0) @binding(0) var m: MatrixBatch; @group(0) @binding(1) var result: Matrix; @compute @workgroup_size(1) fn main(@builtin(global_invocation_id) global_id: vec3) { result.size = m.size; result.size.z = 1; var vc = result.size.x / 4; var resi = global_id.y * vc + global_id.x; result.data[resi] = vec4(0f); var mi = resi; for (var z = 0u; z < m.size.z; z++) { result.data[resi] += m.data[mi] / vec4(f32(m.size.z)); mi += m.size.y * vc; } }