问题标签 [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.
cuda - 为什么 cuda-memcheck racecheck 报告 cufft 错误?
racecheck 工具报告了我的应用程序的内存竞争。我已将其与 CUFFT 执行功能隔离开来。
难道我做错了什么?如果没有,我怎样才能让racecheck忽略这个?
这是一个最小的示例,当运行时cuda-memcheck --tool racecheck
会产生一堆“危险”,例如
这个例子
c++11 - 使用 CMake 使用 cuFFT 回调和 C++11 构建项目
使用 cuFFT 回调构建 CUDA 8.0 项目需要使用静态链接的 cuFFT 库并使用(-dc 编译器选项)将代码编译为可重定位设备代码。我一直无法使用 CUFFT_STATIC_LIBRARY 等使用 CMake v3.7.0 来实现这一点。任何人都能够使用 CMake 构建这样的项目吗?
我的项目 CMakeLists.txt 中用于动态链接 cuFFT 库的相关表达式:
c++ - 关于袖带 R2C 和 C2R
我已经使用袖带进行研究,但是使用它时遇到了一些问题。我的步骤如下:
- 使用 R2C 对图像进行正向 FFT
- 将核系数与复数结果相乘
- 使用 C2R 对乘法结果进行逆 FFT
但是,当我使用复数结果与核相乘时,出现了一个严重的问题,cufft 复数结果不等于 fftw 的结果,结果中有很多零。我知道 R2C 的结果大小是 N1(N2/2+1),但我想得到完整的复杂结果。如何解决这个问题呢?即如何恢复R2C结果?以及如何将相乘的结果放入C2R并得到正确答案?
我的实现程序代码如下:
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
方法时,输出数据为inf
or 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
页面幻灯片上的示例计算22
是computed=0.975879 reference=0.975882
,但我的结果完全不同并且非常大。
以下代码是我使用的。
有什么我搞砸的吗?如果有人可以帮助我,我将不胜感激。
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?
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 简而言之
提前致谢!
c# - Alea GPU 中的 cuFFT
我正在使用 Alea GPU 使用 C# 语言在 GPU 上编程。我在 Visual Studio 2017 项目上安装了 Alea 3.0.4,但我找不到一些 cuFFT 库。在 NVidia 的网站上,cuFFT 是 CUDA Toolkit 的一部分,所以我不需要下载额外的 CUDA 库。我是否需要下载一些额外的绑定或者可以将 cuFFT 与 Alea GPU 一起使用?
c++ - 如何:CUDA IFFT
在 Matlab 中,当我输入一个复数的一维数组时,我有一个具有相同大小和相同维度的实数的数组的输出。尝试在 CUDA C 中重复此操作,但输出不同。你能帮忙吗?在 Matlab 中,当我输入 ifft(array)
我的arrayOfComplexNmbers:
我的arrayOfRealNumbers:
当我进入ifft(arrayOfComplexNmbers)
Matlab 时,我的输出是arrayOfRealNumbers
. 谢谢!这是我的 CUDA 代码:
python - pyculib fft 使用 gpu:加速
我是一名初学者,试图学习如何使用 GPU 执行高速计算。我正在尝试使用 GPU 实现一个简单的 FFT 程序。下面是我用于使用 CPU 内核计算 FFT 的程序。
现在下图是使用imshow()
函数绘制时作为频谱图的输出:
定时输出如下:
现在我使用 Anaconda 提供的 pyculib 和 numba 包重写上述程序以使用我的 PC 的 GPU,即 Quadro K2200。
我运行上述程序时的时序输出显示,GPU 实现实际上多花了 30 秒。
我猜这是因为我反复将数组复制到设备上并为每一帧取回它。有没有更好的方法来实现这一点?我真的很想知道我在这里做错了什么的任何意见。
编辑:添加分析结果
对于 CPU 代码:根据累积时间排序的前 20 个函数调用
对于 GPU 代码:基于累积时间排序
pyculib 的 fft 函数大约需要 20 秒,而 numpy fft 大约需要 0.6 秒。为什么 pyculib 的功能需要这么长时间?有没有办法改进代码以缩短这段时间?还是使用不同的库更好?