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

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

1. 下载

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

2.编程

加入头文件:

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

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

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

  • 0
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值