// silu.wgsl — element-wise SiLU/Swish activation, in-place. // silu(x) = x * sigmoid(x) = x / (1 + exp(-x)) struct Params { n: u32, } @group(0) @binding(0) var data: 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; } let x = data[i]; let s = 1.0 / (1.0 + exp(-x)); data[i] = x * s; }