Library with 3D FFT-Based Convolution Support


I’m working on an application in which 3D convolution is the bottleneck, and would like to get the best performance possible with preferably an existing library that supports 3D convolution.

I tried using cuDNN and got it to work, however, the user guide stated that FFT-based option (CUDNN_CONVOLUTION_FWD_ALGO_FFT) isn’t supported for 3D convolution. And since FFT is known as one of the fastest ways to compute convolution I was wondering if anyone has answers to any of the following questions:

  1. Is there an existing library with out-of-the-box 3D FFT-based convolution?
  2. Will there be a support for 3D FFT-based convolution in future releases of cuDNN?

Thanks a lot!

For future developers who find this question:

Working on the same issue with cuDNN v7.0.5 and CUDA 8.0 I found that the documentation now lists three algorithms supported for 3-D Convolution (page 80; cuDNN API reference; v7). The one with FFT support is CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING. CUDNN_CONVOLUTION_FWD_ALGO_FFT (without tiling) does not appear to support 3-D convolution as of cuDNN v7.

On a separate note, ArrayFire has a 3D convolution function which I believe uses a cuFFT backend routine which may be faster than cuDNN.