本仓库用于记录一些kernel的优化思路的一些实现demo,以便于个人理解和学习。
其中包括
- softmax
- reduce
- sgemm的各类优化,2维线程块划分,向量化读取,warp级分块,双缓冲区
- flash attention v1
有些kernel还配套创建了XX_try.cu
文件,在理解了kernel实现细节之后可以在XX_try.cu
文件中删除掉带有core kernel
Tag的方法的实现内容,然后自己去实现,编译执行后,如果实现无误会显示结果输出正确。
本仓库提供了基本的编译脚本make_shell.sh
# 使用方式
make_shell.sh [file_path]
# example
make_shell.sh falsh_attn/fa1.cu
# 会生成fa1.cu.o的文件
./flash_attn/fa1.cu.o
# Max shared memory: 49152, requested shared memory: 26624
# Results are correct!
本仓库参考了cuda.keter.top,感谢这位大佬提供的技术知识支持。