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

cuda - 多次调用 cufft 商店回调

我在复杂到复杂的异地一维批量 FFT 中使用袖带存储回调(即我正在执行许多相同大小的一维 FFT)。从文档的第 2.9.4 节开始,我希望每个输出都只调用一次此回调。特别是从链接中逐字引用的这句话:

cuFFT 将为输入中的每个点调用一次且仅一次的加载回调例程。类似地,它将为输出中的每个点调用一次存储回调例程,并且仅一次。

尽管如此,我似乎有一个与此相矛盾的例子。在下面的代码中,我希望看到每个数字 0-19 恰好出现一次,对应于每个输出样本只调用一次存储回调。但是,当我执行 504 个大小为 32 的 1D FFT 时,每个输出都会调用存储回调两次!

fft_sz=32, num_ffts=504 的示例输出:

相反,如果我执行 20 个大小为 1024 的 FFT,那么我会得到预期的行为:每个输出都只调用一次存储回调。fft_sz=1024, num_ffts=20 的示例输出:

我是不是误解了什么,我有错误,还是袖带有问题?

我在 Linux Mint 上运行它,在 GeForce GTX 1080 上使用 cuda V8.0.61、g++ 5.4.0:

这是我的编译命令:

0 投票
1 回答
319 浏览

python - 使用 pyculib 的 3D FFT 的结果是错误的

我使用 pyculib 在 Anaconda 3.5 中对矩阵执行 3D FFT。我只是按照网站上发布的示例代码进行操作。但我发现了一些有趣的东西,不明白为什么。

numpy.arange仅当用于创建矩阵时,使用 pyculib 对矩阵执行 3D FFT 才是正确的。

这是代码:

最后,结果是False而且origresult的区别不是一个小数字,不可忽略。我尝试了一些其他数据集(不是随机数),并得到了一些错误的结果。

另外,我在没有逆 FFT 的情况下进行测试:

结果也是错误的。

网站上的测试代码,他们numpy.arange用来创建矩阵。我试过了:

而且这个矩阵的FFT结果是对的。

谁能帮忙指出原因?

0 投票
1 回答
215 浏览

c++ - 如何在多个 GPU 上同时执行 cufftXt 和 CUDA 内核?

我想使用两个 GPU 来执行一个内核,然后使用 cufftXt 执行一个 FFT。数据大小可能有几 GB。我对在 2 个 GPU 上为内核分配内存的理解是,您应该将主机阵列分成两半并将前半部分发送到 GPU0,另一半发送到 GPU1。以下示例显示了如何做到这一点。

但是,我看不出这种方法如何与 cufftXt 兼容。看来我应该使用辅助函数 cufftXtMemcpy 自动将数据拆分到设备上。但是如果我这样做了,那么上面显示的多 GPU 内核方法将不可用,除非我为 cufftXt 和内核分配单独的设备内存。有没有办法在不双重分配设备内存的情况下同时运行 cufftXt 和内核?

0 投票
1 回答
126 浏览

cuda - 如何在更大的阵列中对特定感兴趣区域 (ROI) 执行 cufft fwd 和 inv 变换?

考虑大小为 1920x1080 的图像。如何为 720x960 ROI 做 cufft R2C 和 C2R?

0 投票
1 回答
381 浏览

cuda - openACC pgc++ vs pgcc,链接错误

我从https://www.olcf.ornl.gov/tutorials/mixing-openacc-with-gpu-libraries/下载了示例 代码在上面的 mwntioned 链接中给出

1) 使用 pgcc

2) 使用 pgc++

我收到以下错误

0 投票
1 回答
100 浏览

openacc - cuFFT 批量转换与单次转换

cuFFT 的 NVIDIA cuda 文档说“这些批量转换比单个转换具有更高的性能”(更多信息请访问:http ://docs.nvidia.com/cuda/cufft/index.html#ixzz57haP0Mtz 关注我们:@GPUComputing on Twitter | NVIDIA在 Facebook 上)但没有显示任何定量信息。有关加速多少的任何信息?从一个单一的转换我的意思是在一个 for 循环内。

0 投票
1 回答
359 浏览

python - 每次在 pycuda FFT 中得到不同的结果

我正在编写可以比较numpy.fft.fft2pycuda但结果不匹配的代码。此外pycuda,每次的结果都是模棱两可的。

数据文件:https ://nofile.io/f/bjGRQGRVSCG/gauss.npy

我开始怀疑我们是否甚至可以使用 pycuda 执行 2D FFT?

0 投票
2 回答
107 浏览

gpu - use_device() openACC 的参数

是否允许传递对象而不是指向以下指令的指针

pragma acc host_data use_device(myobject)

这是代码,Pn 是对象,Pn.P 是指向存储数据的数组的指针

运行给出 Seg Fault

0 投票
1 回答
366 浏览

cuda - 在 HPC 上创建袖带计划时的 CUFFT_INVALID_DEVICE

我正在我自己的本地机器上(在 Archlinux 和使用 nvidia 驱动程序 390 和 cuda 9.1 的 Ubuntu 16.04 上)和我们的本地 HPC 集群上测试以下代码:

我编译nvcc cuda_test.cu -lcufft

在我的两台本地机器上,代码都运行良好;但是,我尝试在我们的 HPC 集群上使用相同的代码,它会在该硬件/配置上返回 CUFFT_INVALID_DEVICE 错误。这是这些设备的硬件和驱动程序配置。

  • 对于一个集群,我们有多个 P100 可用,并且使用 nvidia 驱动程序版本 384.90 和 cuda 版本 8.0.61。
  • 在第二个集群上,我们使用带有 nvidia 驱动程序版本 367.44 和 cuda 版本 8.0.44 的 K80。请注意,在此硬件上使用 cuda 版本 7.5.18 运行代码时,上述代码仍会返回错误,但这实际上不会影响代码的执行(据我所知)。

据此 cuda 版本应该可以与可用的驱动程序版本一起使用;但是,当我之前在本地 ubuntu 机器上的驱动程序和 cuda 安装不正确时,我收到了类似的错误。

我完全不知道如何在这里继续,只能想到几件事:

  1. 我在本地机器(Titan X、pascal 和 GTX 970)上使用的消费类硬件与集群 HPC 硬件之间存在一些差异。
  2. 有一些我没有考虑过的驱动程序配置问题。我尽我所能尝试了不同的 cuda 版本,但它们似乎都不起作用,除了 7.5.18,它返回了相同的错误,但似乎并没有影响性能。
  3. cuda 7.5.18 之后 cufft 发生了一些我没有意识到的变化。

注意:这只是一个例子,但我有一个更大的代码库,由于这个错误似乎没有运行,我正在尝试找出当前如何解决这个问题。

感谢您阅读,如果您对如何进行有任何想法,请告诉我!

编辑——在 Rob 的评论之后添加了评论并修复了主代码中的错字。

0 投票
1 回答
41 浏览

gpu - 在与 CUDA 的互操作区域内使用 openACC 指令

是否有任何方法可以进一步并行化以下计算区域中的循环,替换 #pragma acc loop 指令由 PGI 18.1 引入

许多 cuda 计划是否已经解决了这个问题?