NVIDIA/cudnn-frontend
cuDNN Frontend is NVIDIA's modern, open-source entry point to the cuDNN library and a growing collection of high-performance open-source kernels.
NVIDIA cuDNN Frontend (cuDNN‑FE)
是什么 – 一个轻量级的头文件仅有的 C++ 库,附带 Python 绑定,用于封装 NVIDIA 的 cuDNN Graph API。它为开发者提供了一种更高层次、更易用的方式,在现代 NVIDIA GPU(Hopper H100/H200,Blackwell B200/GB200/GB300)上构建和运行高性能深度学习原语(卷积、GEMM、注意力、归一化等)。该包还附带一组不断增长的开源内核(Flash‑Attention / SDPA、融合 GEMM‑+‑激活、块稀疏注意力等),支持 JIT 编译并在运行时选择。
主要特性
- 统一的图 API – 创建一次
cudnn_frontend::graph::Graph对象,即可在多次执行中复用。 - 头文件仅有的 C++ – 无需链接库;只需
#include <cudnn_frontend.h>。 - Python / PyTorch 集成 –
pip install nvidia‑cudnn‑frontend提供cudnnPython 模块,包含pybind11绑定和预构建的torch.compile自定义操作。 - 自动调优与计划排序 – 前端会构建多个引擎候选(包括新的开源“FROST”内核),并选择最快的一个。
- 开源内核 – Flash‑Attention(SDPA)、用于混合专家的分组 GEMM、融合 RMSNorm+SiLU、块稀疏和原生稀疏注意力等,全部使用 CuTe DSL 编写,采用 Apache‑2.0 许可证发布。
- 支持 FP16、BF16、FP8、MXFP8 – 支持 Hopper/Blackwell 上最新的低精度格式。
典型使用场景
- 需要在 H100/Blackwell 上使用最快注意力内核构建自定义 Transformer 模型的研究人员。
- 希望在不编写 CUDA 内核的情况下将 cuDNN 加速层集成到 PyTorch 流水线中的工程师。
- 训练混合专家模型的团队,希望使用融合的分组 GEMM + 激活内核以减少内存流量。
- 任何希望检查、修改或贡献前沿 GPU 内核的人(OSS 内核支持 JIT 编译,可自定义)。
安装
- Python:
pip install nvidia-cudnn-frontend(需要 Python 3.10+、NVIDIA 驱动、CUDA Toolkit、cuDNN ≥ 8.5.0)。 - C++: 只需将
include/目录添加到编译器的包含路径,并链接 CUDA 和 cuDNN 库进行编译。 - 从源码安装: 使用
pip install -v git+https://github.com/NVIDIA/cudnn-frontend.git安装 Python 绑定,或使用 CMake 构建 C++ 示例(cmake … && cmake --build .)。
生态系统与集成
- 与 PyTorch 兼容(自定义操作位于
python/cudnn/experimental/ops)。 - 与 CUDA Graphs 兼容,可集成到
torch.compile流水线中。 - 提供卷积、矩阵乘法、SDPA/Flash‑Attention、RMSNorm 等的示例笔记本和 C++ 示例。
- 文档托管在 NVIDIA 开发者网站,博客中包含深入分析文章。
成熟度
- 由 NVIDIA 持续维护,版本发布在 PyPI 上。
- 核心前端 API 稳定,新 OSS 内核逐步添加(例如 FROST GEMM、Flex Attention、HSTU、DSA)。
- 日志记录和环境报告工具有助于调试和可复现性。
许可证
- 主要为 Apache License 2.0;少数文件采用 MIT 许可证(已明确标注)。所有第三方版权信息列于
THIRD_PARTY_LICENSES.txt。
相关
- 项目
- 项目
- 项目
- 项目
- 项目