由于 trendforge.devlive.top 访问受限,请切换到 trendforge.devlive.org 域名
LeetCUDA 5分钟快速开始指南
在NVIDIA GPU上快速体验CUDA内核性能,运行HGEMM和FlashAttention基准测试。
环境要求
支持的操作系统
运行环境
所需工具
克隆项目仓库
运行CUDA代码(支持Tensor Cores)
操作步骤
克隆项目并进入目录
从GitHub获取LeetCUDA源代码。
git clone https://github.com/xlite-dev/LeetCUDA.git
cd LeetCUDA
预期结果::成功创建LeetCUDA文件夹并进入。
确保git已安装。
安装Python依赖
安装项目运行所需的Python包(主要为PyTorch和相关工具)。
pip install torch --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
预期结果::显示成功安装torch等包。
请根据你系统实际安装的CUDA Toolkit版本选择正确的PyTorch安装命令。可以在`nvcc --version`中查看CUDA版本。
编译CUDA内核(可选,但推荐)
项目包含预编译的内核,但编译可确保兼容性。
python setup.py install
echo '如果上述命令不存在,可直接跳过此步,项目已包含预编译库。'
预期结果::无错误输出,或显示安装成功。
此步可能因环境而异,若失败可跳过,直接尝试运行示例。
运行HGEMM基准测试示例
运行一个简单的HGEMM(半精度通用矩阵乘法)内核,查看性能。
python hgemm_example.py
echo '如果不存在,请尝试: python -m leetcuda.hgemm 或查看kernels/hgemm/目录下的具体脚本。'
预期结果::在终端输出HGEMM性能数据(如TFLOPS),并与cuBLAS进行比较,显示能达到98%~100%的性能。
如果没有特定的`hgemm_example.py`,请查看`kernels/hgemm/`或`examples/`目录下的其他示例脚本(如`toy_hgemm_example.py`)。
运行FlashAttention内核示例
运行一个基于MMA PTX的FlashAttention内核示例。
python flash_attn_example.py
echo '如果不存在,请尝试: python -m leetcuda.flash_attn 或查看kernels/flash_attn/目录下的具体脚本。'
预期结果::在终端输出FlashAttention内核的运行结果和性能数据。
示例可能需要较大的GPU显存。如果内存不足,可以尝试减小示例中的序列长度或批量大小。
验证LeetCUDA运行成功
检查关键输出信息。
快速提示
确保你的NVIDIA驱动版本支持CUDA 12.x。
如果遇到`torch.cuda.is_available()`返回False,请检查PyTorch与CUDA版本的匹配性。
项目包含200+个内核,建议从`samples/`或`examples/`目录下的脚本开始探索。
常见问题
运行脚本时提示'CUDA out of memory'。
减小示例脚本中的张量大小(如矩阵维度M, N, K,序列长度)或批量大小。
`nvcc --version`命令未找到。
安装CUDA Toolkit并将其`bin`目录添加到系统`PATH`环境变量。
`pip install torch`后`import torch; print(torch.version.cuda)`输出为None。
卸载PyTorch并使用`--index-url`参数重新安装,明确指定CUDA版本(如cu121)。
下一步
浏览kernels目录
查看`kernels/`下的子目录,有`easy`、`medium`、`hard`等不同难度的CUDA内核实现。
阅读文档
查看`docs/`或项目根目录的PDF文件(如`interview/tex/notes-v2.pdf`)获取系统学习笔记。
尝试修改参数
修改示例脚本中的矩阵大小、数据类型等参数,观察性能变化,加深理解。
相关项目推荐
karpathy/llm.c
基于纯C/CUDA的简易大语言模型训练
NVlabs/instant-ngp
即时神经图形原语:极速神经辐射场(NeRF)及其他技术
HigherOrderCO/HVM2
一个基于Rust的大规模并行、最优函数运行时
deepseek-ai/DeepEP
DeepEP:高效的专家并行通信库
deepseek-ai/DeepGEMM
DeepGEMM:具备细粒度缩放功能的精简高效FP8通用矩阵乘内核
flashinfer-ai/flashinfer
FlashInfer:大语言模型服务的核心计算库