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 提供 cudnn Python 模块,包含 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。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目