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