CUDNN入坑指南(0)卷積算法實現(xiàn)類型

cuDNN目前提供以下幾種卷積算法的實現(xiàn)方式[1]

  • CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM

該實現(xiàn)方式將卷積隱式轉(zhuǎn)換成矩陣乘法,完成計算。不需要顯式將輸入張量數(shù)據(jù)轉(zhuǎn)換成矩陣形式保存。

  • CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM

該實現(xiàn)方式將卷積隱式轉(zhuǎn)換成矩陣乘法,完成計算。但是需要一些額外的內(nèi)存空間去保存預計算得到的索引值,以便隱式地將輸入張量數(shù)據(jù)轉(zhuǎn)換成矩陣形式。

  • CUDNN_CONVOLUTION_FWD_ALGO_GEMM

該實現(xiàn)方式將卷積顯式轉(zhuǎn)換成矩陣乘法,完成計算。在顯式完成矩陣乘法過程中,需要額外申請內(nèi)存空間,將輸入轉(zhuǎn)換成矩陣形式。

  • CUDNN_CONVOLUTION_FWD_ALGO_DIRECT

該實現(xiàn)方式即直接完成卷積計算,不會隱式或顯式的將卷積轉(zhuǎn)換成矩陣乘法。

  • CUDNN_CONVOLUTION_FWD_ALGO_FFT

該實現(xiàn)方式利用快速傅里葉變換完成卷積計算。需要額外申請內(nèi)存空間,保存中間結(jié)果。

  • CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING

該實現(xiàn)方式利用快速傅里葉變換完成卷積計算,但是需要對輸入進行分塊。同樣需要額外申請內(nèi)存空間,保存中間結(jié)果,但是對大尺寸的輸入,所需內(nèi)存空間小于CUDNN_CONVOLUTION_FWD_ALGO_FFT算法

  • CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD

該實現(xiàn)方式利用Winograd變換完成卷積計算。需要額外申請內(nèi)存空間,保存中間結(jié)果。

  • CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED

該實現(xiàn)方式利用Winograd變換完成卷積計算。需要額外申請內(nèi)存空間,保存中間結(jié)果。


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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容