后端 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_MISMATCHCUDNN_STATUS_NOT_SUPPORTED_CUDA_GRAPH_NATIVE_APICUDNN_BEHAVIOR_NOTE_SUPPORTS_CUDA_GRAPH_NATIVE_API
cuDNN 9.2.0 的 API 更改#
已添加的 API
已添加的枚举
CUDNN_STATUS_SUBLIBRARY_LOADING_FAILEDCUDNN_ATTR_ENGINECFG_WORKSPACE_SIZECUDNN_ATTR_ENGINECFG_SHARED_MEMORY_USED
已弃用的 API
cuDNN 9.1.0 的 API 更改#
已添加的枚举
CUDNN_NUMERICAL_NOTE_STRICT_NAN_PROPCUDNN_POINTWISE_ATAN2CUDNN_POINTWISE_CBRTCUDNN_POINTWISE_CLZCUDNN_POINTWISE_IS_FINITECUDNN_POINTWISE_POPCCUDNN_POINTWISE_ROUND_NEAREST_AFZCUDNN_POINTWISE_ROUND_NEAREST_EVENCUDNN_POINTWISE_SHIFT_LEFTCUDNN_POINTWISE_SHIFT_RIGHT_ARITHMETICCUDNN_POINTWISE_SHIFT_RIGHT_LOGICALCUDNN_POINTWISE_XORCUDNN_POINTWISE_ANDCUDNN_POINTWISE_ORCUDNN_POINTWISE_NOT
cuDNN 9.0.0 的 API 更改#
已添加的环境变量
CUDNN_LOGLEVEL_DB
已添加的类型
已添加的 API
已添加的枚举
CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCHCUDNN_STATUS_SERIALIZATION_VERSION_MISMATCHCUDNN_STATUS_BAD_PARAM_NULL_POINTERCUDNN_STATUS_BAD_PARAM_MISALIGNED_POINTERCUDNN_STATUS_BAD_PARAM_NOT_FINALIZEDCUDNN_STATUS_BAD_PARAM_OUT_OF_BOUNDCUDNN_STATUS_BAD_PARAM_SIZE_INSUFFICIENTCUDNN_STATUS_BAD_PARAM_STREAM_MISMATCHCUDNN_STATUS_BAD_PARAM_SHAPE_MISMATCHCUDNN_STATUS_BAD_PARAM_DUPLICATED_ENTRIESCUDNN_STATUS_BAD_PARAM_ATTRIBUTE_TYPECUDNN_STATUS_NOT_SUPPORTED_GRAPH_PATTERNCUDNN_STATUS_NOT_SUPPORTED_SHAPECUDNN_STATUS_NOT_SUPPORTED_DATA_TYPECUDNN_STATUS_NOT_SUPPORTED_LAYOUTCUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDA_DRIVERCUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDARTCUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCHCUDNN_STATUS_NOT_SUPPORTED_RUNTIME_PREREQUISITE_MISSINGCUDNN_STATUS_NOT_SUPPORTED_SUBLIBRARY_UNAVAILABLECUDNN_STATUS_NOT_SUPPORTED_SHARED_MEMORY_INSUFFICIENTCUDNN_STATUS_NOT_SUPPORTED_PADDINGCUDNN_STATUS_NOT_SUPPORTED_BAD_LAUNCH_PARAMCUDNN_STATUS_INTERNAL_ERROR_COMPILATION_FAILEDCUDNN_STATUS_INTERNAL_ERROR_UNEXPECTED_VALUECUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILEDCUDNN_STATUS_INTERNAL_ERROR_DEVICE_ALLOCATION_FAILEDCUDNN_STATUS_INTERNAL_ERROR_BAD_LAUNCH_PARAMCUDNN_STATUS_INTERNAL_ERROR_TEXTURE_CREATION_FAILEDCUDNN_STATUS_EXECUTION_FAILED_CUDA_DRIVERCUDNN_STATUS_EXECUTION_FAILED_CUBLASCUDNN_STATUS_EXECUTION_FAILED_CUDARTCUDNN_STATUS_EXECUTION_FAILED_CURAND
已弃用的环境变量
CUDNN_LOGERR_DBGCUDNN_LOGWARN_DBGCUDNN_LOGINFO_DBG
已弃用的 API
已弃用的枚举
CUDNN_ATTR_OPERATION_RESAMPLE_BWD_ALPHACUDNN_ATTR_OPERATION_RESAMPLE_BWD_BETACUDNN_ATTR_OPERATION_RESAMPLE_FWD_ALPHACUDNN_ATTR_OPERATION_RESAMPLE_FWD_BETACUDNN_DATA_INT8x32CUDNN_DATA_INT8x4CUDNN_DATA_UINT8x4CUDNN_STATUS_ALLOC_FAILEDCUDNN_STATUS_ARCH_MISMATCHCUDNN_STATUS_INVALID_VALUECUDNN_STATUS_MAPPING_ERRORCUDNN_STATUS_RUNTIME_PREREQUISITE_MISSINGCUDNN_STATUS_VERSION_MISMATCHcudnnBackendAttributeName_t:::CUDNN_ATTR_POINTWISE_NAN_PROPAGATIONcudnnBackendAttributeType_t::CUDNN_TYPE_NAN_PROPOGATIONCUDNN_TYPE_NAN_PROPOGATIONCUDNN_ATTR_POINTWISE_NAN_PROPAGATIONCUDNN_KNOB_TYPE_SPLIT_KCUDNN_KNOB_TYPE_USE_TEXCUDNN_KNOB_TYPE_KBLOCKCUDNN_KNOB_TYPE_LDGACUDNN_KNOB_TYPE_LDGBCUDNN_KNOB_TYPE_CHUNK_KCUDNN_KNOB_TYPE_SPLIT_HCUDNN_KNOB_TYPE_WINO_TILECUDNN_KNOB_TYPE_CTA_SPLIT_K_MODECUDNN_KNOB_TYPE_IDX_MODECUDNN_KNOB_TYPE_SLICEDCUDNN_KNOB_TYPE_SPLIT_RSCUDNN_KNOB_TYPE_SINGLEBUFFERCUDNN_KNOB_TYPE_LDGCCUDNN_KNOB_TYPE_TILE_CGACUDNN_KNOB_TYPE_NUM_C_PER_BLOCK
已弃用的类型
已移除的 API
在 v8 中已弃用,在 v9 中已移除的函数 |
替换函数 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
已移除的类型
cudnnRNNPaddingMode_tcudnnAttnQueryMap_t