cuDNN FE 是现代、开源的 NVIDIA cuDNN 库和高性能开源内核的入口点。它提供了一个 C++ 头文件库和一个 Python 接口,用于访问强大的 cuDNN 图 API 和开源内核。
cudnn_frontend::graph::Graph 对象来描述复杂的子图。pybind11),抽象了后端 API 的样板代码。要运行 SDPA 基准测试,请参考 benchmarks/sdpa 文件夹。当前结果如下:

- SDPA 参数:batch=1; num_q_heads=64; num_kv_heads=8; head_dim=128; is_causal=True
- x 轴显示序列长度
- 结果在 NVIDIA GB200 GPU 上获得

- SDPA 参数:batch=1; num_q_heads=64; num_kv_heads=8; head_dim=128; is_causal=False
- x 轴显示序列长度
- 结果在 NVIDIA GB200 GPU 上获得

- SDPA 参数:batch=1; num_q_heads=128; num_kv_heads=128; head_dim_qk=192; head_dim_vo=128; is_causal=True
- x 轴显示序列长度
- 结果在 NVIDIA GB200 GPU 上获得

- SDPA 参数:batch=1; num_q_heads=64; num_kv_heads=8; head_dim=128; is_causal=True
- x 轴显示序列长度
- 结果在 NVIDIA GB300 GPU 上获得

- SDPA 参数:batch=1; num_q_heads=64; num_kv_heads=8; head_dim=128; is_causal=False
- x 轴显示序列长度
- 结果在 NVIDIA GB300 GPU 上获得

- SDPA 参数:batch=1; num_q_heads=128; num_kv_heads=128; head_dim_qk=192; head_dim_vo=128; is_causal=True
- x 轴显示序列长度
- 结果在 NVIDIA GB300 GPU 上获得
最简单的方式是通过 pip 安装:
pip install nvidia_cudnn_frontend
要求:
* Python 3.8+
* NVIDIA 驱动和 CUDA 工具包
由于 C++ API 是仅头文件的,集成非常简便。只需在您的编译单元中包含头文件:
#include <cudnn_frontend.h>
请确保您的包含路径指向此仓库的 include/ 目录。
如果您想从源码构建 Python 绑定或运行 C++ 示例:
1. 依赖项
* python-dev (例如,apt-get install python-dev)
* requirements.txt 中列出的依赖项 (pip install -r requirements.txt)
2. Python 源码构建
pip install -v git+https://github.com/NVIDIA/cudnn-frontend.git
可以使用环境变量 CUDAToolkit_ROOT 和 CUDNN_PATH 来覆盖默认路径。
3. C++ 示例构建
mkdir build && cd build
cmake -DCUDNN_PATH=/path/to/cudnn -DCUDAToolkit_ROOT=/path/to/cuda ../
cmake --build . -j16
./bin/samples
samples/cpp 获取全面的使用示例。samples/python 获取 Python 风格的实现。我们热忱欢迎贡献!无论是修复错误、改进文档还是优化我们的新开源内核,您的帮助都能让 cuDNN 对每个人变得更好。
要查看执行流程并调试问题,可以通过环境变量启用日志记录:
# 输出到 stdout
export CUDNN_FRONTEND_LOG_INFO=1
export CUDNN_FRONTEND_LOG_FILE=stdout
# 输出到文件
export CUDNN_FRONTEND_LOG_INFO=1
export CUDNN_FRONTEND_LOG_FILE=execution_log.txt
或者,您也可以通过 cudnn_frontend::isLoggingEnabled() 以编程方式控制日志记录。
本项目采用 MIT 许可证。