后端 API 概述#
NVIDIA CUDA 深度神经网络 (cuDNN) 库提供了一个基于上下文的 API,可以轻松实现多线程以及与 CUDA 流的(可选)互操作性。此 API 参考列出了每个子库的数据类型和 API 函数。
cuDNN 版本 9 库被重组为多个子库。这种新的库结构将传统功能(cuDNN 版本 7 及更早版本中的命令式 API,具有固定的操作和融合模式)与 Graph API(cuDNN 版本 8 中引入的声明式 API)以及引擎实现分离开来。Graph API 现在被分组到一个单独的库中 (libcudnn_graph.so
)。
我们建议用户通过 Graph API 进行 API 调用,但旧的 shim 层 (libcudnn.so
) 和传统库 (libcudnn_cnn.so
、libcudnn_ops.so
、libcudnn_adv.so
) 仍然可以直接使用。引擎库 (libcudnn_engines_precompiled.so
、libcudnn_heuristic.so
和 libcudnn_engines_runtime_compiled.so
) 包含必要的内部功能,以支持上述子库。这种库拆分以允许用户方面在加载库方面具有更大的灵活性。更灵活的库可配置性机制将在更高版本的 cuDNN 中引入。

API 分为以下库,每个库在 include 目录中都有相应的头文件
此实体包含与 cuDNN 上下文创建和销毁相关的 API 函数、有效 cuDNN 后端描述符类型的列表、有效属性的列表、有效属性值的子集以及每个后端描述符类型及其属性的完整描述。此外,它还负责加载正确的引擎库。
引擎和启发式库 (
cudnn_engines_precompiled
、cudnn_engines_runtime_compiled
和cudnn_heuristics
) 通过cudnn_graph
使用dlopen
加载,并为cudnn_graph
中的 API 提供实现。将这些引擎彼此分离的主要思想是在未来的 cuDNN 版本中,为用户提供一种仅加载他们需要的功能的方式,从而提供节省内存和磁盘空间的机会。
此实体包含与张量描述符管理、张量实用程序 API 函数以及常见的机器学习算法(如批量归一化、softmax、dropout 等)相关的传统 API 函数。此库依赖于
cudnn_graph
,并间接依赖于cudnn_engines_precompiled
,因为某些 API 的内核驻留在cudnn_engines_precompiled
库中。
此实体包含与卷积神经网络相关的所有传统 API 函数。此库依赖于
cudnn_ops
和cudnn_graph
。cudnn_engines_precompiled
库必须存在,cudnn_cnn
才能正确加载。
此实体包含所有其他功能和算法。这包括 RNN、CTC 损失和多头注意力。此库依赖于
cudnn_ops
和cudnn_graph
。
已添加、已弃用和已移除的 API#
cuDNN 9.5.0 的 API 更改#
已添加的 API
已添加的枚举
CUDNN_STATUS_BAD_PARAM_CUDA_GRAPH_MISMATCH
CUDNN_STATUS_NOT_SUPPORTED_CUDA_GRAPH_NATIVE_API
CUDNN_BEHAVIOR_NOTE_SUPPORTS_CUDA_GRAPH_NATIVE_API
cuDNN 9.2.0 的 API 更改#
已添加的 API
已添加的枚举
CUDNN_STATUS_SUBLIBRARY_LOADING_FAILED
CUDNN_ATTR_ENGINECFG_WORKSPACE_SIZE
CUDNN_ATTR_ENGINECFG_SHARED_MEMORY_USED
已弃用的 API
cuDNN 9.1.0 的 API 更改#
已添加的枚举
CUDNN_NUMERICAL_NOTE_STRICT_NAN_PROP
CUDNN_POINTWISE_ATAN2
CUDNN_POINTWISE_CBRT
CUDNN_POINTWISE_CLZ
CUDNN_POINTWISE_IS_FINITE
CUDNN_POINTWISE_POPC
CUDNN_POINTWISE_ROUND_NEAREST_AFZ
CUDNN_POINTWISE_ROUND_NEAREST_EVEN
CUDNN_POINTWISE_SHIFT_LEFT
CUDNN_POINTWISE_SHIFT_RIGHT_ARITHMETIC
CUDNN_POINTWISE_SHIFT_RIGHT_LOGICAL
CUDNN_POINTWISE_XOR
CUDNN_POINTWISE_AND
CUDNN_POINTWISE_OR
CUDNN_POINTWISE_NOT
cuDNN 9.0.0 的 API 更改#
已添加的环境变量
CUDNN_LOGLEVEL_DB
已添加的类型
已添加的 API
已添加的枚举
CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH
CUDNN_STATUS_SERIALIZATION_VERSION_MISMATCH
CUDNN_STATUS_BAD_PARAM_NULL_POINTER
CUDNN_STATUS_BAD_PARAM_MISALIGNED_POINTER
CUDNN_STATUS_BAD_PARAM_NOT_FINALIZED
CUDNN_STATUS_BAD_PARAM_OUT_OF_BOUND
CUDNN_STATUS_BAD_PARAM_SIZE_INSUFFICIENT
CUDNN_STATUS_BAD_PARAM_STREAM_MISMATCH
CUDNN_STATUS_BAD_PARAM_SHAPE_MISMATCH
CUDNN_STATUS_BAD_PARAM_DUPLICATED_ENTRIES
CUDNN_STATUS_BAD_PARAM_ATTRIBUTE_TYPE
CUDNN_STATUS_NOT_SUPPORTED_GRAPH_PATTERN
CUDNN_STATUS_NOT_SUPPORTED_SHAPE
CUDNN_STATUS_NOT_SUPPORTED_DATA_TYPE
CUDNN_STATUS_NOT_SUPPORTED_LAYOUT
CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDA_DRIVER
CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDART
CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH
CUDNN_STATUS_NOT_SUPPORTED_RUNTIME_PREREQUISITE_MISSING
CUDNN_STATUS_NOT_SUPPORTED_SUBLIBRARY_UNAVAILABLE
CUDNN_STATUS_NOT_SUPPORTED_SHARED_MEMORY_INSUFFICIENT
CUDNN_STATUS_NOT_SUPPORTED_PADDING
CUDNN_STATUS_NOT_SUPPORTED_BAD_LAUNCH_PARAM
CUDNN_STATUS_INTERNAL_ERROR_COMPILATION_FAILED
CUDNN_STATUS_INTERNAL_ERROR_UNEXPECTED_VALUE
CUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILED
CUDNN_STATUS_INTERNAL_ERROR_DEVICE_ALLOCATION_FAILED
CUDNN_STATUS_INTERNAL_ERROR_BAD_LAUNCH_PARAM
CUDNN_STATUS_INTERNAL_ERROR_TEXTURE_CREATION_FAILED
CUDNN_STATUS_EXECUTION_FAILED_CUDA_DRIVER
CUDNN_STATUS_EXECUTION_FAILED_CUBLAS
CUDNN_STATUS_EXECUTION_FAILED_CUDART
CUDNN_STATUS_EXECUTION_FAILED_CURAND
已弃用的环境变量
CUDNN_LOGERR_DBG
CUDNN_LOGWARN_DBG
CUDNN_LOGINFO_DBG
已弃用的 API
已弃用的枚举
CUDNN_ATTR_OPERATION_RESAMPLE_BWD_ALPHA
CUDNN_ATTR_OPERATION_RESAMPLE_BWD_BETA
CUDNN_ATTR_OPERATION_RESAMPLE_FWD_ALPHA
CUDNN_ATTR_OPERATION_RESAMPLE_FWD_BETA
CUDNN_DATA_INT8x32
CUDNN_DATA_INT8x4
CUDNN_DATA_UINT8x4
CUDNN_STATUS_ALLOC_FAILED
CUDNN_STATUS_ARCH_MISMATCH
CUDNN_STATUS_INVALID_VALUE
CUDNN_STATUS_MAPPING_ERROR
CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING
CUDNN_STATUS_VERSION_MISMATCH
cudnnBackendAttributeName_t:::CUDNN_ATTR_POINTWISE_NAN_PROPAGATION
cudnnBackendAttributeType_t::CUDNN_TYPE_NAN_PROPOGATION
CUDNN_TYPE_NAN_PROPOGATION
CUDNN_ATTR_POINTWISE_NAN_PROPAGATION
CUDNN_KNOB_TYPE_SPLIT_K
CUDNN_KNOB_TYPE_USE_TEX
CUDNN_KNOB_TYPE_KBLOCK
CUDNN_KNOB_TYPE_LDGA
CUDNN_KNOB_TYPE_LDGB
CUDNN_KNOB_TYPE_CHUNK_K
CUDNN_KNOB_TYPE_SPLIT_H
CUDNN_KNOB_TYPE_WINO_TILE
CUDNN_KNOB_TYPE_CTA_SPLIT_K_MODE
CUDNN_KNOB_TYPE_IDX_MODE
CUDNN_KNOB_TYPE_SLICED
CUDNN_KNOB_TYPE_SPLIT_RS
CUDNN_KNOB_TYPE_SINGLEBUFFER
CUDNN_KNOB_TYPE_LDGC
CUDNN_KNOB_TYPE_TILE_CGA
CUDNN_KNOB_TYPE_NUM_C_PER_BLOCK
已弃用的类型
已移除的 API
在 v8 中已弃用,在 v9 中已移除的函数 |
替换函数 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
已移除的类型
cudnnRNNPaddingMode_t
cudnnAttnQueryMap_t