关于CUFFT输入大小

时间:2015-03-06 21:39:55

标签: cufft

据说,CUFFT库支持针对输入大小进行了高度优化的算法,可以按以下格式编写: 2 ^ a X 3 ^ b X 5 ^ c X 7 ^ d

他们怎么能设法做到这一点?

据我所知,FFT必须仅为 2 ^ a 输入大小提供最佳性能。

2 个答案:

答案 0 :(得分:0)

这意味着素数因子大于7的输入大小会变慢。

答案 1 :(得分:0)

Cooley-Tukey算法可以在各种DFT长度上操作,可以表示为N = N_1 * N_2。该算法递归地将长度为N的DFT表示为长度为N_2的N_1个较小的DFT。

正如您所注意到的,最快的通常是基数2分解,它以N(NlogN)运行,递归地将长度为N的DFT分解为长度为N / 2的2个较小的DFT。

但是,实际性能取决于硬件和实现。例如,如果我们考虑使用线程扭曲大小为32的cuFFT,那么长度为32的某个倍数的DFT将是最佳的(注意:只是一个示例,我不知道实际的优化存在于cuFFT的引擎盖。)

简答:基于Cooley-Tukey radix-n算法,底层代码针对任何最高7的素数因子分解进行了优化。

http://mathworld.wolfram.com/FastFourierTransform.html

https://en.wikipedia.org/wiki/Cooley-Tukey_FFT_algorithm