| // silu.wgsl — element-wise SiLU/Swish activation, in-place. | |
| // silu(x) = x * sigmoid(x) = x / (1 + exp(-x)) | |
| struct Params { n: u32, } | |
| var<storage, read_write> data: array<f32>; | |
| var<uniform> params: Params; | |
| fn main( gid: vec3<u32>) { | |
| 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; | |
| } | |