CUDNN入坑指南(0)卷积算法实现类型

cuDNN目前提供以下几种卷积算法的实现方式[1]

  • CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM

该实现方式将卷积隐式转换成矩阵乘法,完成计算。不需要显式将输入张量数据转换成矩阵形式保存。

  • CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM

该实现方式将卷积隐式转换成矩阵乘法,完成计算。但是需要一些额外的内存空间去保存预计算得到的索引值,以便隐式地将输入张量数据转换成矩阵形式。

  • CUDNN_CONVOLUTION_FWD_ALGO_GEMM

该实现方式将卷积显式转换成矩阵乘法,完成计算。在显式完成矩阵乘法过程中,需要额外申请内存空间,将输入转换成矩阵形式。

  • CUDNN_CONVOLUTION_FWD_ALGO_DIRECT

该实现方式即直接完成卷积计算,不会隐式或显式的将卷积转换成矩阵乘法。

  • CUDNN_CONVOLUTION_FWD_ALGO_FFT

该实现方式利用快速傅里叶变换完成卷积计算。需要额外申请内存空间,保存中间结果。

  • CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING

该实现方式利用快速傅里叶变换完成卷积计算,但是需要对输入进行分块。同样需要额外申请内存空间,保存中间结果,但是对大尺寸的输入,所需内存空间小于CUDNN_CONVOLUTION_FWD_ALGO_FFT算法

  • CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD

该实现方式利用Winograd变换完成卷积计算。需要额外申请内存空间,保存中间结果。

  • CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED

该实现方式利用Winograd变换完成卷积计算。需要额外申请内存空间,保存中间结果。


  1. cudnnConvolutionFwdAlgo_t https://docs.nvidia.com/deeplearning/cudnn/api/index.html#cudnnConvolutionFwdAlgo_t ↩

你可能感兴趣的:(CUDNN入坑指南(0)卷积算法实现类型)