Skip to content

SCPZ24/FineKernels

Repository files navigation

FineKernels

练习实现最优经典算子。

Softmax

实现思路: 块/线程规划

测试性能

特征维度 基础实现 优化实现 加速比
128 0.0463 ms 0.0185 ms 2.50x
1024 0.5891 ms 0.5914 ms 1.00x

Reduce

实现思路: 块/线程规划与线程束原子操作

测试性能

元素数量 基础实现 优化实现 加速比 基础带宽 优化带宽
1,048,576 0.1126 ms 0.0154 ms 7.31x 37.24 GB/s 273.07 GB/s
262,144 0.0051 ms 0.0041 ms 1.24x 204.80 GB/s 256.00 GB/s

FastDiagramKernel

实现思路: 原子操作统计

Transpose Kernel

实现思路: 矩阵转置

测试性能(矩阵尺寸: 8192×8192)

实现方案 执行时间 相对Naive加速比 优化技术
Naive Transpose 2.0154 ms 1.00x 基础实现
Smem Direct Map 0.6605 ms 3.05x 共享内存缓存
Smem Conflict Free (+1) 0.6574 ms 3.07x Bank冲突消除
Smem Double Fetch (Vectorized) 0.6553 ms 3.08x 向量化预取

RMSNorm Kernel

实现思路: RMSNorm

测试性能

测试配置 实现方案 执行时间
N=8, C=4096 Block Collapse 0.5509 ms
N=8, C=4096 Grid Collapse 0.0227 ms
N=1024, C=4096 Block Collapse 0.1055 ms
N=1024, C=4096 Grid Collapse 0.0655 ms

PrefixSum Kernel

实现思路: 前缀和

测试性能

实现方案 执行时间(ms)
Naive Scan (Double Sync) 0.00336
Double Buffer Scan 0.00298
Brent-Kung Tree 0.00359
Brent-Kung (BC-Free) 0.00349
Warp Shuffle Hierarchical 0.00304
尝试了若干种优化,居然都不如基础实现。唐完了。
可能是只有一个block导致的。

About

练习实现最优经典算子。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors