Gaussian Error Gated Linear Unit

105 字
1 分钟
Gaussian Error Gated Linear Unit

题目#

答案#

#include <cuda_runtime.h>
__global__ void geglu_kernel(const float* input, float* output, int halfN) {
int idx = blockDim.x * blockIdx.x + threadIdx.x;
if (idx >= halfN) return;
float x1 = input[idx];
float x2 = input[idx + halfN];
const float inv_sqrt2 = 0.70710678118f;
float gelu = 0.5f * x2 * (1.0f + erff(x2 * inv_sqrt2));
output[idx] = x1 * gelu;
}
// input, output are device pointers
extern "C" void solve(const float* input, float* output, int N) {
int halfN = N / 2;
int threadsPerBlock = 256;
int blocksPerGrid = (halfN + threadsPerBlock - 1) / threadsPerBlock;
geglu_kernel<<<blocksPerGrid, threadsPerBlock>>>(input, output, halfN);
cudaDeviceSynchronize();
}
Gaussian Error Gated Linear Unit
https://dongyanzhang.com/posts/leetgpu/gaussian-error-gated-linear-unit/
作者
阿东阿言
发布于
2026-07-14
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
阿东阿言
I share my notes | projects | experience here...
公告
欢迎来到阿东阿言的博客
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
25
分类
3
标签
5
总字数
11,186
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
v1.0.0
文章许可
CC BY-NC-SA 4.0