问题标签 [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 回答
345 浏览

cuda - 跨多个“重叠”CUDA Stream 启动的 CUDA FFT 计划重用

我正在尝试使用与 GPU 计算重叠的异步内存传输来提高代码的性能。

以前我有一个代码,我在其中创建了一个 FFT 计划,然后多次使用它。在这种情况下,创建 CUDA FFT 计划所花费的时间可以忽略不计,尽管根据之前的这篇文章,它可能非常重要。

现在我转向流,我正在做的是“多次”创建“相同”计划,然后设置 CUDA FFT 流。根据你们中的一些人在一篇文章中给出的答案,这是浪费。但是,有没有其他方法可以做到这一点?

注意:我正在实时获取数据,因此启动“批量”CUDA FFT 是不可能的。我正在做的是创建并启动一个新的 CUDA 流作为完整脉冲传输的结果。

注意 2:我也在考虑使用“CUDA Streams/FFT 计划”的“池”,但我认为这不是一个优雅、明智的解决方案,有什么想法吗?

在分配 CUDA 流之前,是否有其他方法可以“复制”“现有的”fft 计划?

谢谢大家!/gals?希望在圣何塞见到你们中的一些人。=)

奥马尔

0 投票
2 回答
165 浏览

cufft - about CUFFT input sizes

It's written that CUFFT library supports algorithms that higly optimized for input sizes can be written in the folowing form: 2^a X 3^b X 5^c X 7^d.

How could they managed to do that?

For as far as I know, FFT must provide best perfomance only for 2^a input size.

0 投票
2 回答
2296 浏览

c - 如何使用 cuFFT 执行实数到复数的转换

以下代码已从此处改编,以适用于使用 cufftPlan1d 的单个 1D 转换。最终,我想执行一个批处理就地 R2C 转换,但下面的代码使用单独的输入和输出数组执行单个转换。

如何调整此代码以就地执行转换,从而减少设备上分配的内存量?

感谢
Cuda 6.5 - 注意:我正在 MATLAB 2015a 中的 mexFunction 中运行代码

代码:

0 投票
1 回答
311 浏览

cuda - 使用 cuda cufft 库进行一维复数转换

我正在使用 cuda 库“cufft”为复杂到复杂的 1d FFT 编写一个简单的代码。我已经用“malloc”更改了“cudaMalloc”,因为如果我使用 cudaMalloc exe 文件不起作用并崩溃!但这不是主要问题。当我执行程序时,cufftExecC2C 返回一个值!= CUFFT_SUCCESS 所以 FFT 不起作用!!为什么?这是我的代码

0 投票
1 回答
1222 浏览

cuda - 在 nsight eclipse 上未检测到与 cuda 兼容的设备。为什么?

我正在使用 cufft cuda 库编写一个用于快速傅立叶变换的简单代码。我的源文件在 windows7 中的 Visual Studio 中运行良好,但在 ubuntu 14.04 中使用 eclipse nsight,无法正常工作!我已经安装了 nvidia 346.72 驱动程序和 cuda toolkit 7.0,我的视频硬件是 geforce 410M。当我构建我的源代码时,我收到以下消息:

我试图设置库路径,但在首选项窗口中我读到“没有检测到与 CUDA 兼容的设备”请帮助我!最好的后卫马可


现在我可以构建源代码,但我的程序不起作用!

我读到这个错误:modprobe:错误:无法插入'nvidia_331_uvm':无效参数

如果在“cudaMalloc”之后出现“cudaGetLastError() != cudaSuccess”,我会收到一条由我编写的消息

0 投票
1 回答
277 浏览

c++ - CUDA cuFFT 架构 x86_64 的未定义符号

我正在尝试使用 cuFFT 库,但是当我编译我的项目时出现错误:

我在 Mac OS X 10.10.3 上使用 CUDA 7 和 Eclipse Nsight。没有 cuFFT 库的其他示例可以正常工作。还有其他设置吗?

0 投票
1 回答
303 浏览

c++ - VS2013/Cuda7.0 中的 CUFFT 比 VS2010/Cuda4.2 慢 1000 倍

这个简单的 CUFFT 代码在两个 IDE 上运行 -

  1. VS 2013 与 Cuda 7.0
  2. VS 2010 与 Cuda 4.2

我发现带有 Cuda 7.0 的 VS 20131000大约慢了一倍。平均而言,代码0.6 ms在 VS 2010 中执行,并在 VS 2013 中执行。520 ms

代码在同一台计算机上运行,​​具有相同的操作系统、相同的显卡,并且一个接一个地运行。两种情况下的配置都是 x64 Release。您可以选择是使用 C++ 编译器还是 CUDA C/C++ 编译文件。我在两个项目上都尝试了这两种选择,但没有任何区别。

有什么想法可以解决这个问题吗?

FWIW,我在 VS 2013 上使用 Cuda 6.5 得到与 Cuda 7 相同的结果

0 投票
1 回答
407 浏览

c - 2D 袖带变换

我关于stackoverflow的第一个问题。

我是 cuda 的新手。
我只是想执行一个 2D 复杂到复杂的 FFT。
我的输入数据被处理,不需要填充。
我只是无法得到预期的结果。这是我的代码:

这段代码的工作流程如下:

(1) 在主机上分配 h_input 和 h_output
(2) 从文件中加载数据到 h_input -- "INFLU.DAT"
(3) 在设备上分配 d_array,并将 h_input 复制到其中
(4) 将 d_array 复制回 h_output,写入file -- "INFLU_GET.DAT"
---- 查看 d_array 是否接收到正确的数据
(5) 对 d_array 执行复数到复数 FFT
(6) 将 d_array 复制回 h_output,写入文件 -- " INFLU_FFT.DAT"
---- 观察FFT的结果

通过执行步骤 (4) ,我确定 h_input 到 d_array 的副本是正确的。

我的问题是:
在步骤(6)中,我发现经过FFT,d_array和h_output仍然和输入一样。

输入文件为:
https
://drive.google.com/file/d/0B88U83cfBwMmdGFtbGJ2MVlURDg/view?usp= 共享文件名为 INFLU.DAT,大小为 16MB。

我有一个用于比较的结果文件(在 Fortran 中):
https
://drive.google.com/file/d/0B88U83cfBwMmcDR1YzYyRzF4Mjg/view?usp= 共享文件名是 INFLU_FFT_F.DAT,大小也是 16MB。

欢迎任何建议!谢谢!

0 投票
1 回答
1073 浏览

cuda - How to view CUDA library function calls in profiler?

I am using the cuFFT library. How do I modify my code to see the function calls from this library (or any other CUDA library) in the NVIDIA Visual Profiler NVVP? I am using Windows and Visual Studio 2013.

Below is my code. I convert my image and filter to the Fourier domain, then perform point-wise complex matrix multiplication in a custom CUDA kernel I wrote, and then simply perform the inverse DFT on the filtered images spectrum. The results are accurate, but I am not able to figure out how to view the cuFFT functions in the profiler.

enter image description here

0 投票
1 回答
583 浏览

c++ - 调用 cufftGetSize*() 时 CUFFT_ALLOC_FAILED 返回值是什么意思?

cufftGetSize*() 不应该分配任何内存,它没有(我在调用 cufftGetSize* 之前和之后检查了可用内存)。如果以后的分配失败,它会返回 CUFFT_ALLOC_FAILED 吗?

示例代码:

在进程开始时具有 4693 MB 可用内存的 GPU 上,上面的代码产生以下输出:

从 N=73 开始,所有奇数 N 失败,偶数 N 通过。从 N=166 开始,所有 N 都失败。

由于所需的内存不会随 N​​ 线性增长,我假设(!)我的问题的答案确实是:“如果以后的分配失败,它会返回 [s] CUFFT_ALLOC_FAILED”虽然,证明该陈述会很好。

(我的问题是在CUDA 5.5.22下出现的,其他版本我没查过)