论文部分内容阅读
DFT(离散傅里叶变换)是在信号处理、数据图像处理、数值计算等科技和工业领域应用较为核心和重要的一类变换,FFT(快速傅里叶变换)则是DFT的一种最广泛使用的高效计算方法。而DST(离散正弦变换)与DCT(离散余弦变换)是DFT的两种特殊形式,图像处理、计算偏微分方程等方面具有较为深入的应用。 随着对信息处理规模和速度的需求不断提升,在科研、工业、民用等领域对计算的加速也有着不断增长的需求。目前对于FFT计算机计算的优化以已经很成熟,较为流行和知名的有CPU端的FFTW以及GPU端NVDIA公司CUDA的cuFFT。由于体系架构等原因,利用GPU可以拥有比纯CPU更高的计算能力;从而作为NVDIA官方库的cuFFT具有自底层的优化得天独厚的优势,对FFT的加速更为出色,目前处于领先地位。但遗憾的是,DST/DCT不能直接套用或简单修改FFT的计算程序或参数来进行变换。不过,通过分析DST/DCT与通用DFT的联系,在经过严谨的推导证明得出的结论下,我们可以通过对数据分别进行前处理、后处理的方式,利用已有的高度优化的FFT计算程序,对DST/DCT的计算进行加速,从而使其在应用中发挥更大的效能。 本文首先从DFT的原理与性质入手,分析阐述了DFT与FFT的联系,并从FFT的算法上论述了本文采用目前较为高效的FFT计算平台与方法cuFFT的原因。然后通过分析DST/DCT与DFT和FFT的关系和原理,梳理并阐述了通过对原始数据变换前后分别进行前后处理,利用高度优化的FFT计算程序,延拓与非延拓方式计算DST/DCT的理论与方法。之后针对CUDA与cuFFT平台与程序的存储、计算等具体情况和特点,设计并修改优化计算方法,从一维计算处理拓展到二维、三维情况,在此过程中对理论应用和实现方法做出了探索和和研究,尝试实现非延拓方式FFT计算DST/DCT在GPU上的高效并行算法。 通过在GPU上实现非延拓算法,不仅在计算处理规模上得到了降低,还在空间存储上做到了节约,为进一步提高运算规模与速度提供了可能,对不断增长的DST/DCT计算的应用需求具有实用和发展的意义。