CUDNN APIs支持状态(v2.0)
对比 cudnn 8.5.0,cudnn APIs支持状况如下表:
目前常用的NN场景使用的APIs大部分均已支持并调优。
对标Ampere所有API都是软件可支持的,目前无PPU硬件限制的因素;后续软件版本将根据优先级逐步完善。
目前API支持率为: 196/263 = 74.5%。
去除 26个 deprecated APIs,API支持率为: 196/237 = 82.7%。
api | cudnn 8.5.0 | PPU 1.7 | 状态 | 功能说明 |
cudnnCreateRNNDescriptor | Yes | Yes | ||
cudnnDestroyRNNDescriptor | Yes | Yes | ||
cudnnSetRNNDescriptor_v8 | Yes | Yes | ||
cudnnGetRNNDescriptor_v8 | Yes | Yes | ||
cudnnSetRNNDescriptor_v6 | Yes | Yes | ||
cudnnGetRNNDescriptor_v6 | Yes | Yes | ||
cudnnSetRNNMatrixMathType | Yes | Yes | ||
cudnnGetRNNMatrixMathType | Yes | Yes | ||
cudnnSetRNNBiasMode | Yes | Yes | ||
cudnnGetRNNBiasMode | Yes | Yes | ||
cudnnRNNSetClip_v8 | Yes | Yes | ||
cudnnRNNGetClip_v8 | Yes | Yes | ||
cudnnRNNSetClip | Yes | Yes | ||
cudnnRNNGetClip | Yes | Yes | ||
cudnnSetRNNProjectionLayers | Yes | Yes | ||
cudnnGetRNNProjectionLayers | Yes | Yes | ||
cudnnGetRNNWorkspaceSize | Yes | Yes | ||
cudnnGetRNNTrainingReserveSize | Yes | Yes | ||
cudnnGetRNNTempSpaceSizes | Yes | Yes | ||
cudnnGetRNNParamsSize | Yes | Yes | ||
cudnnGetRNNWeightSpaceSize | Yes | Yes | ||
cudnnGetRNNLinLayerMatrixParams | Yes | Yes | ||
cudnnGetRNNLinLayerBiasParams | Yes | Yes | ||
cudnnGetRNNWeightParams | Yes | Yes | ||
cudnnRNNForwardInference | Yes | Yes | ||
cudnnCreateRNNDataDescriptor | Yes | Yes | ||
cudnnDestroyRNNDataDescriptor | Yes | Yes | ||
cudnnSetRNNDataDescriptor | Yes | Yes | ||
cudnnGetRNNDataDescriptor | Yes | Yes | ||
cudnnRNNForward | Yes | Yes | ||
cudnnCreateSeqDataDescriptor | Yes | Yes | ||
cudnnDestroySeqDataDescriptor | Yes | Yes | ||
cudnnSetSeqDataDescriptor | Yes | Yes | ||
cudnnGetSeqDataDescriptor | Yes | Yes | ||
cudnnCreateAttnDescriptor | Yes | Yes | ||
cudnnDestroyAttnDescriptor | Yes | Yes | ||
cudnnSetAttnDescriptor | Yes | Yes | ||
cudnnGetAttnDescriptor | Yes | Yes | ||
cudnnGetMultiHeadAttnBuffers | Yes | Yes | ||
cudnnGetMultiHeadAttnWeights | Yes | Yes | ||
cudnnMultiHeadAttnForward | Yes | Yes | ||
cudnnAdvInferVersionCheck | Yes | Yes | ||
cudnnRNNForwardTraining | Yes | Yes | ||
cudnnRNNBackwardData | Yes | Yes | ||
cudnnRNNBackwardData_v8 | Yes | Yes | ||
cudnnRNNBackwardWeights | Yes | Yes | ||
cudnnRNNBackwardWeights_v8 | Yes | Yes | ||
cudnnDestroyCTCLossDescriptor | Yes | Yes | ||
cudnnCreateCTCLossDescriptor | Yes | Yes | ||
cudnnSetCTCLossDescriptor | Yes | Yes | ||
cudnnGetCTCLossDescriptor | Yes | Yes | ||
cudnnSetCTCLossDescriptorEx | Yes | Yes | ||
cudnnGetCTCLossDescriptorEx | Yes | Yes | ||
cudnnSetCTCLossDescriptor_v8 | Yes | Yes | ||
cudnnGetCTCLossDescriptor_v8 | Yes | Yes | ||
cudnnGetCTCLossWorkspaceSize_v8 | Yes | Yes | ||
cudnnCTCLoss | Yes | Yes | ||
cudnnGetCTCLossWorkspaceSize | Yes | Yes | ||
cudnnCTCLoss_v8 | Yes | Yes | ||
cudnnAdvTrainVersionCheck | Yes | Yes | ||
cudnnBackendCreateDescriptor | Yes | Yes | ||
cudnnBackendDestroyDescriptor | Yes | Yes | ||
cudnnBackendInitialize | Yes | Yes | ||
cudnnBackendFinalize | Yes | Yes | ||
cudnnBackendSetAttribute | Yes | Yes | ||
cudnnBackendGetAttribute | Yes | Yes | ||
cudnnBackendExecute | Yes | Yes | ||
cudnnCreateConvolutionDescriptor | Yes | Yes | ||
cudnnDestroyConvolutionDescriptor | Yes | Yes | ||
cudnnSetConvolution2dDescriptor | Yes | Yes | ||
cudnnGetConvolution2dDescriptor | Yes | Yes | ||
cudnnSetConvolutionNdDescriptor | Yes | Yes | ||
cudnnGetConvolutionNdDescriptor | Yes | Yes | ||
cudnnSetConvolutionMathType | Yes | Yes | ||
cudnnGetConvolutionMathType | Yes | Yes | ||
cudnnSetConvolutionGroupCount | Yes | Yes | ||
cudnnGetConvolutionGroupCount | Yes | Yes | ||
cudnnGetConvolution2dForwardOutputDim | Yes | Yes | ||
cudnnGetConvolutionNdForwardOutputDim | Yes | Yes | ||
cudnnGetConvolutionForwardAlgorithmMaxCount | Yes | Yes | ||
cudnnGetConvolutionBackwardDataAlgorithmMaxCount | Yes | Yes | ||
cudnnGetConvolutionForwardWorkspaceSize | Yes | Yes | ||
cudnnGetConvolutionForwardAlgorithm_v7 | Yes | Yes | ||
cudnnFindConvolutionForwardAlgorithm | Yes | Yes | ||
cudnnFindConvolutionForwardAlgorithmEx | Yes | Yes | ||
cudnnConvolutionForward | Yes | Yes | ||
cudnnConvolutionBiasActivationForward | Yes | Yes | ||
cudnnGetConvolutionBackwardDataWorkspaceSize | Yes | Yes | ||
cudnnFindConvolutionBackwardDataAlgorithm | Yes | Yes | ||
cudnnFindConvolutionBackwardDataAlgorithmEx | Yes | Yes | ||
cudnnGetConvolutionBackwardDataAlgorithm_v7 | Yes | Yes | ||
cudnnConvolutionBackwardData | Yes | Yes | ||
cudnnGetFoldedConvBackwardDataDescriptors | Yes | Yes | ||
cudnnCnnInferVersionCheck | Yes | Yes | ||
cudnnGetConvolutionBackwardFilterWorkspaceSize | Yes | Yes | ||
cudnnGetConvolutionBackwardFilterAlgorithmMaxCount | Yes | Yes | ||
cudnnFindConvolutionBackwardFilterAlgorithm | Yes | Yes | ||
cudnnFindConvolutionBackwardFilterAlgorithmEx | Yes | Yes | ||
cudnnGetConvolutionBackwardFilterAlgorithm_v7 | Yes | Yes | ||
cudnnConvolutionBackwardFilter | Yes | Yes | ||
cudnnCnnTrainVersionCheck | Yes | Yes | ||
cudnnGetVersion | Yes | Yes | ||
cudnnGetProperty | Yes | Yes | ||
cudnnGetErrorString | Yes | Yes | ||
cudnnCreate | Yes | Yes | ||
cudnnDestroy | Yes | Yes | ||
cudnnSetStream | Yes | Yes | ||
cudnnGetStream | Yes | Yes | ||
cudnnGetCudartVersion | Yes | Yes | ||
cudnnCreateTensorDescriptor | Yes | Yes | ||
cudnnDestroyTensorDescriptor | Yes | Yes | ||
cudnnSetTensor4dDescriptor | Yes | Yes | ||
cudnnSetTensor4dDescriptorEx | Yes | Yes | ||
cudnnGetTensor4dDescriptor | Yes | Yes | ||
cudnnSetTensorNdDescriptor | Yes | Yes | ||
cudnnSetTensorNdDescriptorEx | Yes | Yes | ||
cudnnGetTensorNdDescriptor | Yes | Yes | ||
cudnnGetTensorSizeInBytes | Yes | Yes | ||
cudnnCreateFilterDescriptor | Yes | Yes | ||
cudnnDestroyFilterDescriptor | Yes | Yes | ||
cudnnSetFilter4dDescriptor | Yes | Yes | ||
cudnnGetFilter4dDescriptor | Yes | Yes | ||
cudnnSetFilterNdDescriptor | Yes | Yes | ||
cudnnGetFilterNdDescriptor | Yes | Yes | ||
cudnnGetFilterSizeInBytes | Yes | Yes | ||
cudnnDeriveBNTensorDescriptor | Yes | Yes | ||
cudnnBatchNormalizationForwardInference | Yes | Yes | ||
cudnnCreateOpTensorDescriptor | Yes | Yes | ||
cudnnDestroyOpTensorDescriptor | Yes | Yes | ||
cudnnSetOpTensorDescriptor | Yes | Yes | ||
cudnnGetOpTensorDescriptor | Yes | Yes | ||
cudnnCreatePoolingDescriptor | Yes | Yes | ||
cudnnSetPooling2dDescriptor | Yes | Yes | ||
cudnnSetPoolingNdDescriptor | Yes | Yes | ||
cudnnGetPoolingNdForwardOutputDim | Yes | Yes | ||
cudnnGetPooling2dForwardOutputDim | Yes | Yes | ||
cudnnDestroyPoolingDescriptor | Yes | Yes | ||
cudnnPoolingForward | Yes | Yes | ||
cudnnCreateActivationDescriptor | Yes | Yes | ||
cudnnSetActivationDescriptor | Yes | Yes | ||
cudnnGetActivationDescriptor | Yes | Yes | ||
cudnnDestroyActivationDescriptor | Yes | Yes | ||
cudnnActivationForward | Yes | Yes | ||
cudnnCreateDropoutDescriptor | Yes | Yes | ||
cudnnDestroyDropoutDescriptor | Yes | Yes | ||
cudnnDropoutGetStatesSize | Yes | Yes | ||
cudnnDropoutGetReserveSpaceSize | Yes | Yes | ||
cudnnSetDropoutDescriptor | Yes | Yes | ||
cudnnRestoreDropoutDescriptor | Yes | Yes | ||
cudnnGetDropoutDescriptor | Yes | Yes | ||
cudnnDropoutForward | Yes | Yes | ||
cudnnSoftmaxForward | Yes | Yes | ||
cudnnAddTensor | Yes | Yes | ||
cudnnScaleTensor | Yes | Yes | ||
cudnnOpTensor | Yes | Yes | ||
cudnnTransformTensor | Yes | Yes | ||
cudnnCreateTensorTransformDescriptor | Yes | Yes | ||
cudnnDestroyTensorTransformDescriptor | Yes | Yes | ||
cudnnSetTensorTransformDescriptor | Yes | Yes | ||
cudnnGetTensorTransformDescriptor | Yes | Yes | ||
cudnnTransformTensorEx | Yes | Yes | ||
cudnnInitTransformDest | Yes | Yes | ||
cudnnTransformFilter | Yes | Yes | ||
cudnnCreateReduceTensorDescriptor | Yes | Yes | ||
cudnnDestroyReduceTensorDescriptor | Yes | Yes | ||
cudnnSetReduceTensorDescriptor | Yes | Yes | ||
cudnnGetReduceTensorDescriptor | Yes | Yes | ||
cudnnReduceTensor | Yes | Yes | ||
cudnnGetReductionWorkspaceSize | Yes | Yes | ||
cudnnGetReductionIndicesSize | Yes | Yes | ||
cudnnCreateLRNDescriptor | Yes | Yes | ||
cudnnDestroyLRNDescriptor | Yes | Yes | ||
cudnnGetLRNDescriptor | Yes | Yes | ||
cudnnSetLRNDescriptor | Yes | Yes | ||
cudnnLRNCrossChannelForward | Yes | Yes | ||
cudnnCreateSpatialTransformerDescriptor | Yes | Yes | ||
cudnnDestroySpatialTransformerDescriptor | Yes | Yes | ||
cudnnSetSpatialTransformerNdDescriptor | Yes | Yes | ||
cudnnSpatialTfGridGeneratorForward | Yes | Yes | ||
cudnnSpatialTfSamplerForward | Yes | Yes | ||
cudnnOpsInferVersionCheck | Yes | Yes | ||
cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize | Yes | Yes | ||
cudnnGetBatchNormalizationBackwardExWorkspaceSize | Yes | Yes | ||
cudnnGetBatchNormalizationTrainingExReserveSpaceSize | Yes | Yes | ||
cudnnBatchNormalizationForwardTraining | Yes | Yes | ||
cudnnBatchNormalizationForwardTrainingEx | Yes | Yes | ||
cudnnBatchNormalizationBackward | Yes | Yes | ||
cudnnBatchNormalizationBackwardEx | Yes | Yes | ||
cudnnPoolingBackward | Yes | Yes | ||
cudnnActivationBackward | Yes | Yes | ||
cudnnDropoutBackward | Yes | Yes | ||
cudnnSoftmaxBackward | Yes | Yes | ||
cudnnLRNCrossChannelBackward | Yes | Yes | ||
cudnnSpatialTfSamplerBackward | Yes | Yes | ||
cudnnSpatialTfGridGeneratorBackward | Yes | Yes | ||
cudnnOpsTrainVersionCheck | Yes | Yes | ||
cudnnQueryRuntimeError | Yes | No | 辅助函数,用于检查 BN是否有numerical overflows | |
cudnnSetTensor | Yes | No | 辅助函数,设置Tensor 为定值 | |
cudnnGetPooling2dDescriptor | Yes | No | 辅助函数,get pooling Nd Descriptor | |
cudnnGetPoolingNdDescriptor | Yes | No | ||
cudnnSetActivationDescriptorSwishBeta | Yes | No | activation函数中swish_beta的set/get | |
cudnnGetActivationDescriptorSwishBeta | Yes | No | ||
cudnnCreateAlgorithmDescriptor | Yes | No | deprecated in cuDNN 8.0 | AlgorithmDescriptor 参数相关操作 |
cudnnSetAlgorithmDescriptor | Yes | No | ||
cudnnGetAlgorithmDescriptor | Yes | No | ||
cudnnCopyAlgorithmDescriptor | Yes | No | ||
cudnnDestroyAlgorithmDescriptor | Yes | No | ||
cudnnCreateAlgorithmPerformance | Yes | No | AlgorithmPerformance 参数相关操作 | |
cudnnSetAlgorithmPerformance | Yes | No | ||
cudnnGetAlgorithmPerformance | Yes | No | ||
cudnnDestroyAlgorithmPerformance | Yes | No | ||
cudnnGetAlgorithmSpaceSize | Yes | No | deprecated in cuDNN 8.0 | Algo 的 metadata的存储 |
cudnnSaveAlgorithm | Yes | No | ||
cudnnRestoreAlgorithm | Yes | No | ||
cudnnSetCallback | Yes | No | 回调函数相关 | |
cudnnGetCallback | Yes | No | ||
cudnnSetConvolutionReorderType | Yes | No | conv ReorderType的set/get | |
cudnnGetConvolutionReorderType | Yes | No | ||
cudnnIm2Col | Yes | No | im2Col, 构造前向相关矩阵 | |
cudnnReorderFilterAndBias | Yes | No | reorder the filter and bias. | |
cudnnConvolutionBackwardBias | Yes | No | compute conv grad with bias. | |
cudnnCreateFusedOpsConstParamPack | Yes | No | cudnnFusedOps 相关计算,可用backend API替换 | |
cudnnDestroyFusedOpsConstParamPack | Yes | No | ||
cudnnSetFusedOpsConstParamPackAttribute | Yes | No | ||
cudnnGetFusedOpsConstParamPackAttribute | Yes | No | ||
cudnnCreateFusedOpsVariantParamPack | Yes | No | ||
cudnnDestroyFusedOpsVariantParamPack | Yes | No | ||
cudnnSetFusedOpsVariantParamPackAttribute | Yes | No | ||
cudnnGetFusedOpsVariantParamPackAttribute | Yes | No | ||
cudnnCreateFusedOpsPlan | Yes | No | ||
cudnnDestroyFusedOpsPlan | Yes | No | ||
cudnnMakeFusedOpsPlan | Yes | No | ||
cudnnFusedOpsExecute | Yes | No | ||
cudnnCreatePersistentRNNPlan | Yes | No | deprecated in cuDNN 8.0 | rnn Persistent 新算法相关操作 |
cudnnDestroyPersistentRNNPlan | Yes | No | ||
cudnnSetPersistentRNNPlan | Yes | No | ||
cudnnBuildRNNDynamic | Yes | No | ||
cudnnSetRNNPaddingMode | Yes | No | deprecated in cuDNN 8.0 | rnn Padding相关操作。可用acdnnSetRNNDescriptor_v8() |
cudnnGetRNNPaddingMode | Yes | No | ||
cudnnRNNForwardInferenceEx | Yes | No | 可用 acdnnRNNForward() | |
cudnnSetRNNAlgorithmDescriptor | Yes | No | rnn 算法寻优 | |
cudnnGetRNNForwardInferenceAlgorithmMaxCount | Yes | No | ||
cudnnFindRNNForwardInferenceAlgorithmEx | Yes | No | ||
cudnnRNNForwardTrainingEx | Yes | No | deprecated in cuDNN 8.0 | 可用 acdnnRNNForward() |
cudnnRNNBackwardDataEx | Yes | No | 可用 acdnnRNNBackwardData_v8() | |
cudnnRNNBackwardWeightsEx | Yes | No | 可用 acdnnRNNBackwardWeights_v8() | |
cudnnGetRNNForwardTrainingAlgorithmMaxCount | Yes | No | rnn 算法寻优 | |
cudnnFindRNNForwardTrainingAlgorithmEx | Yes | No | ||
cudnnGetRNNBackwardDataAlgorithmMaxCount | Yes | No | ||
cudnnFindRNNBackwardDataAlgorithmEx | Yes | No | ||
cudnnGetRNNBackwardWeightsAlgorithmMaxCount | Yes | No | ||
cudnnFindRNNBackwardWeightsAlgorithmEx | Yes | No | ||
cudnnMultiHeadAttnBackwardData | Yes | No | MultiHeadAttn 反向 | |
cudnnMultiHeadAttnBackwardWeights | Yes | No | ||
cudnnDivisiveNormalizationForward | Yes | No | 前向 DivisiveNormalization 层计算 | |
cudnnDeriveNormTensorDescriptor | Yes | No | 导出normalization 层Tensor描述 | |
cudnnNormalizationForwardInference | Yes | No | 前向 Normalization 层计算 | |
cudnnDivisiveNormalizationBackward | Yes | No | 反向 DivisiveNormalization 层计算 | |
cudnnGetNormalizationForwardTrainingWorkspaceSize | Yes | No | Normalization 层辅助api,ws 大小获取 | |
cudnnGetNormalizationBackwardWorkspaceSize | Yes | No | ||
cudnnGetNormalizationTrainingReserveSpaceSize | Yes | No | ||
cudnnNormalizationForwardTraining | Yes | No | 前向 Normalization 层计算 | |
cudnnNormalizationBackward | Yes | No | 反向 Normalization 层计算 |