18 lines
532 B
Plaintext
18 lines
532 B
Plaintext
#version 450
|
|
/* SwiGLU activation: gate = silu(gate) * up, in place on `gate`.
|
|
* silu(v) = v * sigmoid(v). */
|
|
layout(local_size_x = 256) in;
|
|
|
|
layout(std430, binding = 0) buffer Gate { float gate[]; };
|
|
layout(std430, binding = 1) readonly buffer Up { float up[]; };
|
|
|
|
layout(push_constant) uniform PC { uint n; } pc;
|
|
|
|
void main() {
|
|
uint stride_g = gl_NumWorkGroups.x * 256u;
|
|
for (uint i = gl_GlobalInvocationID.x; i < pc.n; i += stride_g) {
|
|
float v = gate[i];
|
|
gate[i] = (v / (1.0 + exp(-v))) * up[i];
|
|
}
|
|
}
|