基于cuFFT库的GPU快速傅里叶变换(FFT)

CUDA为开发人员提供了多种库,cuFFT库则是CUDA中专门用于进行傅里叶变换的函数库。因为在网上找资料,当时想学习一下多个 1 维信号的 fft,这里我推荐这位博主的文章,但是我没有成功,我后来自己实现了。

1. 下载

想使用cuFFT库,必须下载,可以从CUDA官网下载软件包,也可以通过我提供的模板下载资料里有。 提取码: dp52
一键安装即可。注意我的是win10系统。
基于cuFFT库的GPU快速傅里叶变换(FFT)_第1张图片
默认安装位置为 C:\Users\BAOJH~1\AppData\Local\Temp\CUDA
安装完毕一般会安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1里可以找到。安装不成功多安装几次,别让杀毒软件杀了,注意:此库适用于N卡,A卡貌似不能运用。

2.编程

加入头文件:

#include
#include
#include < iostream>
#include // Include CUDA runtime and CUFFT
#include
#include “device_launch_parameters.h” // Helper functions for CUDA

在属性里加入路径,路径一般在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1里能找到。
基于cuFFT库的GPU快速傅里叶变换(FFT)_第2张图片
现在才正式开始:
1、用malloc函数为输入信号分配主机内存用malloc函数为输入信号分配主机内存
2、为输入信号赋值
基于cuFFT库的GPU快速傅里叶变换(FFT)_第3张图片
3、创建cuFFT plan
在这里插入图片描述
4、用cudaMalloc()为输入信号分配设备内存
在这里插入图片描述
5、用cudaMemcpy()将主机内存数据传输到设备内存
在这里插入图片描述
6、傅里叶变换设置
在这里插入图片描述
7、信号转换,如:cufftExecC2C()
在这里插入图片描述
8、用cudaMemcpy()将设备内存数据传输到主机内存
在这里插入图片描述
9、输出信号
基于cuFFT库的GPU快速傅里叶变换(FFT)_第4张图片
10、销毁cuFFT文本:cufftDestroy(plan);清除主机、设备内存空间,设备复位。
基于cuFFT库的GPU快速傅里叶变换(FFT)_第5张图片
开始的时候我想做800*900000的数据,每800为一列。每列做FFT,然后我用cufftPlanMany函数写了以下代码。基于cuFFT库的GPU快速傅里叶变换(FFT)_第6张图片
无论我怎么修改参数,根本没有起作用,不知道是不是我掌握的不好。后来我在傅里叶变换设置时将每800个数据进行FFT就解决了我先前的问题。

我将我那段时间的经验分享给大家,希望能解决各位的问题。
下面为我的项目链接:https://download.csdn.net/download/cao_jie_xin/11214164

你可能感兴趣的:(基于cuFFT库的GPU快速傅里叶变换(FFT))