ArrayFire 中的卷积是否使用 FFT?

Does convolution in ArrayFire use FFT?

我期待在我们的一个开源工具包中加速大型医学图像(512 x 512 x 1000 双倍)上的高斯核导数(最高 2/3 阶)的卷积。我们目前通过 FFT 进行这种卷积。

在朋友推荐 ArrayFire 并阅读这篇文章后 post,我想看看我是否可以采用这个工具包。似乎是一项巨大的努力,使我们能够处理多个后端,尽管我目前只对 CUDA 感兴趣,因为这就是我手头的东西。

我读了这个 post on the forum that says that convolution in ArrayFire switches to frequency domain after a particular kernel size. I looked at the cuda file convolve.cu 但我没有在 ArrayFire 或任何 cuFFT 中发现任何对 fft 的调用。我错过了什么吗?

展望未来,我想直接在频域中构造高斯核的导数,与图像FFT相乘并将其带回来。但我想比较在 space 与频率域中创建卷积核之间的速度提升。此外,ArrayFire 在 3D 中似乎没有高斯内核。

您的观察是正确的,我们还没有为更大的内核大小实现 fft 回退。但是,我们正在尽最大努力在接下来的几周内添加此功能。您在应用程序中使用的内核大小是多少?

我们目前没有实现 3D 高斯核函数。但我相信它可以使用 ArrayFire 中支持 JIT 的元素明智操作轻松实现。有关如何使用元素明智操作的示例,请查看 here.