原文链接:https://developer.nvidia.com/rdp/cudnn-download
(1)为所有层增加了FP16支持(仅用于存储,所有中间计算仍然使用FP32;
(2)为所有层增加3D支持;
(3)增加新的2D卷积实现:前向和后向计算利用FFT加速。具体参考文档
CUDNN_CONVOLUTION_FWD_ALGO_FFT,
CUDNN_CONVOLUTION_BWD_FILTER_ALGO_FFT,
CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT。
2DFFT卷积是确定的。
(4)后向Data和Filter 2D卷积目前支持新的确定算法,相应地为CUDNN_CONVOLUTION_BWD_DATA_ALGO1和CUDNN_CONVOLUTION_BWD_FILTER_ALGO1。这些算法在一些场景下优于非确定算法。
类似于前向,用户可以查询最快的算法或根据需要选一个特定算法。
(5)增加了通道间局部响应归一化层(LRN CrossChannel);
(6)增加了可分离的归一化层。该层可以用于实现通道内 2D或3D LRN和LCN;
(7)增加了对数软最大化层(Log Softmax);
(8)增加三个新函数
cudnnFindConvolutionForwardAlgorithm,
cudnnFindConvolutionBackwardFilterAlgorithm,
cudnnFindConvolutionBackwardDataAlgorithm。
它们尝试每个可用的卷积算法,按速度和内存需求量排序。
(9)目前下采样层(pooling)支持负补边操作(negative padding);
Maxwell性能提升
(10)前向卷积算法CUDNN_CONVOLUTION_FWD_ALGO1和data后向卷积算法CUDNN_CONVOLUTION_BWD_DATA_ALGO1在Maxwell架构下的性能大大提升;
后向API兼容性
(11)为了保持后向兼容cuDNN v2.0,更新了几个带后缀_v3的API函数:
cudnnSetConvolutionDescriptor_v3
cudnnGetConvolutionDescriptor_v3
cudnnConvolutionBackwardFilter_v3
cudnnConvolutionBackwardData_v3
原先的函数已经过期。
cuBLAS依赖
(12)新的FFT卷积算法使用了一些cuBLAS函数。在cuDNN应用程序中使用cuDNN动态库无需显式链接cuBLAS库,而使用cuDNN静态库则需要显式链接cuBLAS库。
已知的问题
(13)在Maxwell架构下,当选择CUDNN_CONVOLUTION_BWD_DATA_ALGO1算法,而且补边数目大于滤波器尺寸时函数cudnnConvolutionBackwardData_v3可能给出错误结果。