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

cuda - 使用 cufftPlanMany 批量 FFT

我想使用 cuFFT 库提供的批处理方法执行4412D FFT。32-by-32变换的参数如下:

在我使用上述计划进行正向和反向 FFT 之后,我无法取回原始数据。

谁能告诉我如何为 cudaPlanMany 正确设置参数?提前谢谢了。

顺便问一下,这是最cudaPlanMany适合我的情况的方法吗?

0 投票
1 回答
1066 浏览

cuda - fftw 和 cufft 的结果不同

我只是在测试 fftw 和 cufft 但结果不同(我是这方面的初学者)。矩阵是 12 行 x 8 列,每个元素是一个 4 浮点向量,并且变换是实数到复数。我试图保持 fftw 和 cufft 的设置相同,因此结果应该相同,但输出不同。有人可以帮忙找出问题所在吗?语法高亮版本: http: //pastebin.com/Fs5B1Ty6

这个程序可以编译:

和输出:

0 投票
1 回答
449 浏览

matlab - CUFFT:尝试逐行实现矩阵的fft

我正在尝试复制 matlab fft 功能,它对矩阵进行逐行(或逐列)fft。每行将是袖带计划中的批次之一。

我可以使用 cufftExecC2C(下面代码中注释掉的部分有效)使其工作,但不能使用 cufftExecR2C。我的代码使用 cufftPlan1d,但理想情况下我想使用 cufftPlanMany 来实现它。

我想知道我做错了什么,以及是否有更好的方法来做到这一点。谢谢你。

0 投票
1 回答
1036 浏览

cuda - CuFFT 双复数

我想用 CuFFT Lib 做一个从 double 到 std::complex 的 FFT。我的代码看起来像

但在我看来这一定是错误的,因为我认为转换后的值应该是 1 0 0 0 0 .... 或者没有标准化 100 0 0 0 0 .... 但我只是得到 0 0 0 0 0 。 ..

此外,如果 cufftExecD2Z 能够正常工作,我会更喜欢它,这应该是可能的,但我还没有弄清楚如何正确地做到这一点。有人可以帮忙吗?

0 投票
1 回答
129 浏览

buffer - 使用 cuFFT 缓冲液

我们对 cuFFT 使用的内存有限制吗(尤其是一维变换)。我需要为大量数据计算 FFT,并且我想充分利用我的 GPU 功能。

在用户指南中记录了

在最坏的情况下,CUFFT 库为 8*batch*n[0]*..*n[rank-1] cufftComplex 或 cufftDoubleComplex 元素分配空间(其中,batch 表示将并行执行的转换数量,rank 为输入数据的维数(参见多维变换)和 n[] 是变换维数的数组)分别用于单精度和双精度变换。

它还说

根据计划的配置,可能会使用较少的内存。在某些特定情况下,临时空间分配可以低至 1*batch*n[0]*..*n[rank-1] cufftComplex 或 cufftDoubleComplex 元素。

在某些特定情况下”是没有意义的。具体情况没有规定,下限也没用,我们只能用上限“8*.....”来限制GM上使用的内存大小。

就我而言,我有一个一维“经典”复杂变换,它似乎只使用“1 * ....”。但我无法验证。我应该与“ 8*batch*n[0]*..*n[rank-1] 元素”保持一致,还是有人对这些特定案例有更多详细信息?

0 投票
1 回答
912 浏览

cuda - cuda FFT和iFFT后的图像不一样

我正在尝试使用 CUDA 在 2D 图像上执行 FFT -> 斜坡滤波 -> iFFT。首先,作为测试,我尝试在没有任何过滤器的情况下进行 FFT 和 iFFt。在 FFT 和 iFFT 之后,图像看起来相同,但在操作之前,图像像素值在 0-255 之间,而在 FFT 和 iFFT 之后,图像包含 ~10^7 值。

测试图像包含浮点数,尺寸为 512 x 360。我使用“cuffSinogram”函数执行 fft,使用“cuInversefftSinogram”函数执行 iFFT。这是我写的两个函数:

可以在此处找到一张原始和修改过的 tiff 图像(我建议使用 imageJ 打开)

0 投票
1 回答
1618 浏览

cuda - CUDA 内存副本和 cuFFT 的异步执行

我有一个 CUDA 程序,用于计算大小的 FFT 50000。目前,我将整个数组复制到 GPU 并执行 cuFFT。现在,我正在尝试优化程序,NVIDIA Visual Profiler 告诉我通过并行计算来隐藏 memcopy。我的问题是:

例如,是否可以复制第一个5000元素,然后开始计算,然后将下一组数据并行复制到计算等?

由于 DFT 基本上是时间值乘以复指数函数的总和,我认为应该可以“按块”计算 FFT。

袖口支持这个吗?一般来说,这是一个好的计算想法吗?

编辑

更清楚地说,我不想在不同的阵列上并行计算不同的 FFT。假设我在时域中有大量正弦信号,我想知道信号中有哪些频率。例如,我的想法是将信号长度的三分之一复制到 GPU,然后再复制下三分之一,并使用已复制的输入值的前三分之一并行计算 FFT。然后复制最后三分之一并更新输出值,直到处理完所有时间值。所以最后应该有一个输出阵列,在窦的频率上有一个峰值。

0 投票
1 回答
174 浏览

c - 我们可以使用 cuFFT 来处理多个不同大小的文件吗?

我是一名业余爱好者,致力于将多个文件的 FFT 操作/执行并行化。比如说,我有 1000 个文件,每个文件都有不同大小的真实数据,即如果一个文件有 22000 个值,另一个文件可以有 15000 个值,下一个文件可以有 19000 个值,依此类推。

关于如何实现这一点的任何想法?如果您的答案是通过BATCH,请解释一下如何?

0 投票
1 回答
471 浏览

cuda - CuFFT 未知错误

我有一个 300,000 个点的数组,我想要每 600 个点的 fft。我正在尝试使用 cufftPlanMany 执行,但我在这里收到一个未知错误:

这是上下文中的代码

知道错误实际上是什么吗?

0 投票
1 回答
2774 浏览

cuda - 真实数组的一维批量 FFT

我听说/读到,如果我们有一些n FFT 来执行一些m个向量,我们可以使用 cuFFT 的批处理模式。所以为了测试它,我做了一个示例程序并运行它。我使用的数据是一个文件,其中包含一些1024浮点数作为1024重复10数次的相同数字。虽然我应该对1024点 FFT 得到相同的结果,但我没有得到。如果我在某个地方在概念上是错误的,请纠正我,下面是代码,如果你能纠正我犯的一些错误。

注意:我只使用 1D FFT。

这是代码片段: