构建和运行依赖 cuDNN 的程序#
构建依赖 cuDNN 的程序#
因为 cuDNN 使用外部库中定义的符号,所以您需要确保链接器在构建依赖 cuDNN 的程序时可以找到这些库。 一种实现此目的的方法是在链接器命令中显式指定它们。
动态 cuDNN 库的链接器依赖项
- Linux
将
-lz
添加到链接器命令。- Windows
Windows 不需要额外的链接器标志。
静态 cuDNN 库的链接器依赖项
- Linux
将
-lcublasLt_static -lz -lnvrtc_static -lnvrtc-builtins_static -lnvptxcompiler_static -lcudart_static
添加到链接器命令。- Windows
不适用。 Windows 不支持静态 cuDNN 库。
运行依赖 cuDNN 的程序#
在运行依赖 cuDNN 的程序时,除了 cuDNN 目录的路径外,请确保将以下库目录的路径添加到 Linux 上的环境变量 $LD_LIBRARY_PATH
或 Windows 上的环境变量 %PATH%
。
Linux
libz.so
(在加载时由ld.so
需求)
libcublasLt.so
(当使用某些 matmul 引擎、卷积引擎、旧版卷积 API、RNN API 和旧版多头注意力 API 时,在运行时由dlopen()
需求)
libnvrtc.so
(当使用运行时编译引擎时,在运行时由dlopen()
需求)
Windows
cublasLt*.dll
(当使用某些 matmul 引擎、卷积引擎、旧版卷积 API、RNN API 和旧版多头注意力 API 时,在运行时由LoadLibraryA()
需求)
nvrtc*.dll
(当使用运行时编译引擎时,在运行时由LoadLibraryA()
需求)注意
当静态链接 cuDNN 时,请在链接器命令中使用
--whole-archive
和--no-whole-archive
链接器标志包裹所需的静态子库。
库间依赖项#
由于 cuDNN 被拆分为多个库,因此需要考虑它们之间的依赖关系。 有关更多信息,请参阅 API 库概述。