跳转到主要内容

CUDNN FrontEnd python库

项目描述

cuDNN FrontEnd(FE) API

介绍

cuDNN FrontEnd(FE) API是一个仅包含C++头文件的库,它封装了cuDNN C后端API。FE和后端API都是访问同一组功能的入口点,通常称为“图API”。

尽管图API有两个入口点(即后端和前端),但预计大多数用户将使用FE API。原因如下

  • FE API在保持控制的情况下更为简洁。所有通过后端API可访问的功能也可以通过FE API访问。
  • FE API在后台API之上增加了功能,例如错误过滤和自动调优。

此外,对于那些使用后台API的用户,FE API源代码和示例可以作为参考实现。

在FE v1.0 API中,用户可以通过持久的cudnn_frontend::graph::Graph对象描述多个操作,形成子图。与FE v0.x API不同,用户不必担心指定中间虚拟张量的形状和大小。FE v1.0 API扩展了早期版本的基础,并引入了一组新的API,以进一步简化工作流程。有关FE v1.0 API的详细信息,请参阅README.FE.1.0.md

此外,FE v1.0 API通过pybind11提供了对所有API的Python绑定。建议cuDNN的新用户从前端v1.0 API开始。有关其使用的更多详细信息,请参阅samples/cppsamples/python

使用方法

对于c++用户,为了包含整个库,将cudnn_frontend头文件include/cudnn_frontend.h包含到您的编译单元中。

对于Python用户,运行import cudnn

构建

依赖项

随着v1.0版本的发布,我们将最低支持的cudnn版本提升到8.5.0

cuda可以从nvidia开发区下载

cudnn可以从以下位置安装: NVIDIA开发区域 - pypi wheels

所需的最小Python版本为3.6。Python绑定编译需要开发包,可以通过运行apt-get install python-dev来安装。

要运行Python示例,您需要requirements.txt中提到的依赖项。这可以通过运行以下命令来安装:pip install -r requirements.txt

Python API

pip wheel安装

下载与您的Python安装对应的pip wheel。

pip install nvidia_cudnn_frontend

源安装

通过运行以下命令安装FE Python API:

pip install -v git+https://github.com/NVIDIA/cudnn-frontend.git

上述命令从默认系统路径选择cuda和cudnn。

要提供自定义CUDA安装路径,请使用环境变量:CUDAToolkit_ROOT
要提供自定义CUDNN安装路径,请使用环境变量:CUDNN_PATH

检查安装

要测试安装是否成功,请运行

pytest test/python_fe

注意:通过Python绑定仅公开v1.0 API。

C++ API

C++ API是仅头文件库。

根CMakeLists.txt可以用作将cudnn_frontend包含到您的项目构建系统中的参考。

构建示例

以下编译步骤仅适用于构建示例。

根据以下链接提供CUDA安装路径:https://cmake.com.cn/cmake/help/latest/module/FindCUDAToolkit.html

使用CUDNN_PATH环境变量或cmake参数提供CUDNN安装路径。

CUDNN_PATH包含cudnn安装

  • 头文件位于CUDNN_PATH/include。
  • 库位于CUDNN_PATH/lib或CUDNN_PATH/lib64或CUDNN_PATH/lib/x64。

对于源代码构建,

mkdir build
cd build
cmake -DCUDNN_PATH=/path/to/cudnn -DCUDAToolkit_ROOT=/path/to/cuda  ../
cmake --build . -j16
bin/samples

要跳过构建示例,请使用-DCUDNN_FRONTEND_BUILD_SAMPLES=OFF

要跳过构建Python绑定,请使用-DCUDNN_FRONTEND_BUILD_PYTHON_BINDINGS=OFF

如果您有一个过时的cmake缓存,并希望更新cudnn/cuda路径,请删除cmake缓存(或构建目录)并重新执行上述步骤。

调试

对于初始调试,我们建议启用cudnn FE日志记录,并检查警告和错误。cuDNN Frontend API日志记录通过cuDNN前端API记录执行流程。默认情况下,此功能是禁用的,可以通过本节中描述的方法启用。

方法1:使用环境变量

环境变量 CUDNN_FRONTEND_LOG_INFO=0 CUDNN_FRONTEND_LOG_INFO=1
CUDNN_FRONTEND_LOG_FILE not set 无日志记录 无日志记录
CUDNN_FRONTEND_LOG_FILE设置为stdout或stderr 无日志记录 记录到cout或cerr
CUDNN_FRONTEND_LOG_FILE设置为filename.txt 无日志记录 记录到文件名

方法2:使用API调用

调用cudnn_frontend::isLoggingEnabled() = true|false具有设置环境变量的相同效果。调用cudnn_frontend::getStream() = stream_name可以用于直接分配输出流。

要进一步调试,请启用此处描述的cudnn后端日志:https://docs.nvda.net.cn/deeplearning/cudnn/latest/reference/troubleshooting.html#error-reporting-and-api-logging

文档

贡献

请参阅我们的贡献指南

反馈

有关cuDNN的支持、资源和信息,您可以在线找到:https://developer.nvidia.com/cudnn

此外,您可以在问题部分报告错误和RFE。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

本版本没有提供源代码分发文件。请参阅生成分发存档的教程。

编译分发

nvidia_cudnn_frontend-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.27+ x86_64 manylinux: glibc 2.28+ x86_64

nvidia_cudnn_frontend-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.27+ x86_64 manylinux: glibc 2.28+ x86_64

nvidia_cudnn_frontend-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.27+ x86_64 manylinux: glibc 2.28+ x86_64

nvidia_cudnn_frontend-1.7.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.27+ x86_64 manylinux: glibc 2.28+ x86_64

nvidia_cudnn_frontend-1.7.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB 查看哈希值)

上传时间: CPython 3.8 manylinux: glibc 2.27+ x86_64 manylinux: glibc 2.28+ x86_64

由以下支持