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/cpp
和samples/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
文档
- 有关v1.0 API文档,请参阅README.FE.1.0.md。
- 有关v0.x API文档,请参阅README.FE.0.x.md。
贡献
请参阅我们的贡献指南。
反馈
有关cuDNN的支持、资源和信息,您可以在线找到:https://developer.nvidia.com/cudnn。
此外,您可以在问题部分报告错误和RFE。
项目详情
哈希值 for nvidia_cudnn_frontend-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c220652e91579e221dc04ff657388667144cf384619e544ffaf4c3a822838383 |
|
MD5 | e07f76bf8f24fab0394d1683f6fb1538 |
|
BLAKE2b-256 | 0852b2848068173253f8aca34383d043db9c780f24d28ce446cb5756b1d52169 |
哈希值 for nvidia_cudnn_frontend-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e7c4acc44d79cfbdc7ac400c70251e45cdde6b4d45835874053bbb3e7460ee01 |
|
MD5 | 3b81b04f787a56b4b564e6f76fd082fb |
|
BLAKE2b-256 | 939f5779f21822fab07312aa3bf5c77f8718d42e460d7827033198c043bce461 |
哈希值 for nvidia_cudnn_frontend-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 738aba48847d37d6557d1a6c198777948f4c71197f0ee6ed2495ea6b29d1c70a |
|
MD5 | 4563425be792d45dfe8b2bba3a078fdd |
|
BLAKE2b-256 | e6cc794c1215df3a1393056648499e5036361379a3a3ffbe3fdfe121541a230b |
哈希值 用于 nvidia_cudnn_frontend-1.7.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 908d63a22642fdb52f1f53095cc57e7c00f44076bc2e7261d8dfeee104533bc6 |
|
MD5 | 6ace75c5dc01c318373c69e5414bd5d6 |
|
BLAKE2b-256 | 1d7f9ec1eefb7b74b4d875bd9f2a42de0f40a7deef07638f262dcddcd4d9fac5 |
哈希值 用于 nvidia_cudnn_frontend-1.7.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a0e706c1a02d322a0068605f12a25e1177ea74ea084d5459ed22ae4d59a563d |
|
MD5 | 3768c369630eab91fabf75ac259bd1fe |
|
BLAKE2b-256 | 17bb0b693c3341c1d6e7f6681c517b64f251a71f0b7cb464cbd454e58607f7e8 |