CUDA为开发人员提供了多种库,每一类库针对某一特定领域的应用,CUFFT库则是CUDA中专门用于进行傅里叶变换的函数库,这一系列的文章是博主近一段时间对cuFFT库的学习总结,主要内容是文档的译文,其间夹杂一些博主自己的理解。初学CUDA,理解有误之处在所难免,阅读本篇文章的读者如若发现请不吝指正。
1. 简介
cuFFT是的全称是CUDA Fast Fourier Transform,顾名思义,它提供了一系列的函数帮助开发者进行快速傅里叶变换的运算。cuFFT库由两个子库构成,它们分别是CUFFT和CUFFTW。CUFFTW库是一个移植工具(porting tool),它为用户提供了一些接口,以使得用户使用FFTW库(一个非常流行的CPU快速傅里叶变换库)编写的程序能够运行在CUDA GPU上。而CUFFT则是纯CUDA接口的快速傅里叶变换库。
在CUDA toolkit 5.5版本中,cuFFT库支持的特性有:
1、对于可以表示为的输入规模,CUFFT会自动采用一些优化算法来达到最佳的运算性能
2、对于所有的输入规模,CUFFT的算法复杂性均为O(nlogn)
3、不同输入输出类型的指定:其中C2C代表输入输出均为复数,R2C代表输入为实数而输出为复数,C2R代表输入为复数而输出为实数。
4、可以进行1维、2维和3维变换
5、多个不同的1D、2D、3D变换可以并行进行
6、同时支持单精度浮点和双精度浮点运算
7、支持就地转换(输出直接覆盖输入)和外部转换(输出和输入不重叠)
8、与FFTW库兼容的数据布局