CUDA fft - cooley tukey,如何利用并行性?

时间:2012-09-09 14:19:27

标签: cuda fft

我知道FFT实现是如何工作的(Cooley-Tuckey algorithm)我知道有一个CUFFT CUDA库可以快速计算1D或2D FFT,但我想知道如何在这个过程中利用CUDA并行性

它与蝴蝶计算有关吗? (类似于每个线程将部分数据加载到共享内存中,然后每个线程计算一个偶数项或奇数项?)

1 个答案:

答案 0 :(得分:6)

我不认为他们使用Cooley-Tuckey算法,因为它的索引排列阶段使得共享内存架构不太方便。此外,该算法适用于两个内存的内存步长,这对于内存合并也不利。他们最有可能使用Stockham自我分类FFT的一些公式:例如Bailey's algorithm

关于实现的问题,你是对的,通常会将一个大的FFT分成几个较小的FFT,完全适合一个线程块。在my work中,我使用了具有128个线程的每个线程块的512或1024点FFT(当然完全展开)。通常,由于需要大量数据传输,因此您无法在GPU上使用经典的radix-2算法。相反,选择radix-8或甚至radix-16算法,以便每个线程一次执行一个大的“蝴蝶”。例如,您还可以访问Vasily Volkov页面,或查看this“经典”论文。