// elementwise_mul.wgsl — a[i] = a[i] * b[i], in-place. // Used in Mamba mixer for gate: gated = hidden_y * silu(gate). struct Params { n: u32, } @group(0) @binding(0) var a_buf: array; @group(0) @binding(1) var b_buf: array; @group(1) @binding(0) var params: Params; @compute @workgroup_size(64) fn main(@builtin(global_invocation_id) gid: vec3) { let i = gid.x; if (i >= params.n) { return; } a_buf[i] = a_buf[i] * b_buf[i]; }