| // softplus.wgsl — element-wise softplus, in-place. | |
| // softplus(x) = max(x, 0) + log(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]; | |
| data[i] = max(x, 0.0) + log(1.0 + exp(-abs(x))); | |
| } | |