问题标签 [cufft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
505 浏览

cuda - 为什么 cuda-memcheck racecheck 报告 cufft 错误?

racecheck 工具报告了我的应用程序的内存竞争。我已将其与 CUFFT 执行功能隔离开来。

难道我做错了什么?如果没有,我怎样才能让racecheck忽略这个?

这是一个最小的示例,当运行时cuda-memcheck --tool racecheck会产生一堆“危险”,例如

这个例子

0 投票
1 回答
602 浏览

c++ - 使用 cuda cuFFT 从复数转换为实数时输出不正确

我正在使用 cuda 7.5 版cufft来执行一些 FFT 和逆 FFT。使用cufftExecC2R(.,.)函数执行逆 FFT 时出现问题。

实际上,当我在中使用 abatch_size = 1时,cufftPlan1d(,)我得到了正确的结果。但是,当我增加批量大小时,结果不正确。

我正在粘贴一个示例最小代码来说明这一点。请忽略代码的肮脏,因为我刚刚快速创建了它。

我无法找出我的代码中的错误在哪里以及我缺少哪些信息。

使用时的示例输出BATCH_SIZE = 1

图 1

使用时的示例输出BATCH_SIZE = 2 图 2

0 投票
0 回答
965 浏览

c++11 - 使用 CMake 使用 cuFFT 回调和 C++11 构建项目

使用 cuFFT 回调构建 CUDA 8.0 项目需要使用静态链接的 cuFFT 库并使用(-dc 编译器选项)将代码编译为可重定位设备代码。我一直无法使用 CUFFT_STATIC_LIBRARY 等使用 CMake v3.7.0 来实现这一点。任何人都能够使用 CMake 构建这样的项目吗?

我的项目 CMakeLists.txt 中用于动态链接 cuFFT 库的相关表达式:

0 投票
1 回答
1310 浏览

c++ - 关于袖带 R2C 和 C2R

我已经使用袖带进行研究,但是使用它时遇到了一些问题。我的步骤如下:

  1. 使用 R2C 对图像进行正向 FFT
  2. 将核系数与复数结果相乘
  3. 使用 C2R 对乘法结果进行逆 FFT

但是,当我使用复数结果与核相乘时,出现了一个严重的问题,cufft 复数结果不等于 fftw 的结果,结果中有很多零。我知道 R2C 的结果大小是 N1(N2/2+1),但我想得到完整的复杂结果。如何解决这个问题呢?即如何恢复R2C结果?以及如何将相乘的结果放入C2R并得到正确答案?

我的实现程序代码如下:

0 投票
2 回答
876 浏览

cuda - 使用 FFT 和 CUDA 求解 Poisson 方程

我在这里关注使用cuFFT库的教程:http: //gpgpu.org/static/sc2007/SC07_CUDA_3_Libraries.pdf

在逐行执行其代码之后,我得到了非常奇怪的结果。

我有一个sNxN数组的输入数据float。该程序进行FFT正向变换,求解泊松方程,然后进行逆向变换FFT。输入数据(和输出数据)称为边长为的正方形图像N。当我注释掉时solve_poisson <<<dimGrid, dimBlock>>> (r_complex_d, kx_d, ky_d, N);,它会正确地对数据进行正向变换,然后执行逆变换,这会导致输出数据与输入数据相同。这是应该发生的。

这是没有调用solve_poisson方法的输出。

但是,当我取消注释该solve_poisson方法时,输出数据为infor nan,这使我相信该方法中的比例变量在某种程度上接近于零solve_poisson。所以我float scale = -(kx[idx] * kx[idx] + ky[idy] * ky[idy]);改为float scale = -(kx[idx] * kx[idx] + ky[idy] * ky[idy]) + 0.00001f. 此更改不在原始教程中。此处计算的结果不应具有极端的正值或负值。

在本教程中,43页面幻灯片上的示例计算22computed=0.975879 reference=0.975882,但我的结果完全不同并且非常大。

以下代码是我使用的。

有什么我搞砸的吗?如果有人可以帮助我,我将不胜感激。

0 投票
1 回答
260 浏览

cuda - How to do inverse fft symmetric with CUFFT

I need to convert this line (MATLAB) to CUDA:

My current implementation is for this line (without 'symmetric' flag):

This is my CUDA implementation:

Please advise - how to do inverse fft symmetric via CUDA?

0 投票
1 回答
253 浏览

python - Anaconda 包,用于在 fft / ifft 调用之间将数组保存在 gpu 内存中

我正在使用带有 ipython 3.6.1 的 anaconda 套件及其加速包。这两个函数 fft 和 ifft 中有一个cufft子包。据我了解,这些都在系统内存中接收一个 numpy 数组并输出到一个 numpy 数组,即所有 gpu 内存以及系统和 gpu 内存之间的传输都是自动处理的,并且 gpu 内存在函数结束时被释放。这似乎一切都很好,似乎对我有用。但是,我想在同一个数组上运行多个 fft/ifft 调用,并且每次只从数组中提取一个数字。将数组保存在 gpu 内存中以最小化系统 <-> gpu 传输会很好。我是否正确,这是不可能使用这个包?如果是这样,是否有另一个包可以做同样的事情。我注意到了reikna项目,但这似乎在 anaconda 中不可用。

我正在做的事情(并且希望在 gpu 上有效地做)在这里使用 numpy.fft 简而言之

提前致谢!

0 投票
1 回答
503 浏览

c# - Alea GPU 中的 cuFFT

我正在使用 Alea GPU 使用 C# 语言在 GPU 上编程。我在 Visual Studio 2017 项目上安装了 Alea 3.0.4,但我找不到一些 cuFFT 库。在 NVidia 的网站上,cuFFT 是 CUDA Toolkit 的一部分,所以我不需要下载额外的 CUDA 库。我是否需要下载一些额外的绑定或者可以将 cuFFT 与 Alea GPU 一起使用?

0 投票
1 回答
421 浏览

c++ - 如何:CUDA IFFT

在 Matlab 中,当我输入一个复数的一维数组时,我有一个具有相同大小和相同维度的实数的数组的输出。尝试在 CUDA C 中重复此操作,但输出不同。你能帮忙吗?在 Matlab 中,当我输入 ifft(array)

我的arrayOfComplexNmbers:

我的arrayOfRealNumbers:

当我进入ifft(arrayOfComplexNmbers)Matlab 时,我的输出是arrayOfRealNumbers. 谢谢!这是我的 CUDA 代码:

0 投票
0 回答
1337 浏览

python - pyculib fft 使用 gpu:加速

我是一名初学者,试图学习如何使用 GPU 执行高速计算。我正在尝试使用 GPU 实现一个简单的 FFT 程序。下面是我用于使用 CPU 内核计算 FFT 的程序。

现在下图是使用imshow()函数绘制时作为频谱图的输出:

在此处输入图像描述

定时输出如下:

现在我使用 Anaconda 提供的 pyculib 和 numba 包重写上述程序以使用我的 PC 的 GPU,即 Quadro K2200。

我运行上述程序时的时序输出显示,GPU 实现实际上多花了 30 秒。

我猜这是因为我反复将数组复制到设备上并为每一帧取回它。有没有更好的方法来实现这一点?我真的很想知道我在这里做错了什么的任何意见。

下面我粘贴 GPU 实现的输出。 在此处输入图像描述

编辑:添加分析结果

对于 CPU 代码:根据累积时间排序的前 20 个函数调用

对于 GPU 代码:基于累积时间排序

pyculib 的 fft 函数大约需要 20 秒,而 numpy fft 大约需要 0.6 秒。为什么 pyculib 的功能需要这么长时间?有没有办法改进代码以缩短这段时间?还是使用不同的库更好?