构建和运行依赖 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 库概述