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

标签 c cuda gpu cufft

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

您知道如何实现这一目标吗?如果您的答案是通过BATCH,请解释一下如何进行?

最佳答案

您的问题有两种标准解决方案:

:cuFFT 通过 cufftSetStream 支持 CUDA 流功能。您想要使用的模式是将每个 FFT 与单独的流相关联。这可能允许您重叠处理多个 FFT。此外,进出 GPU 的复制可以与计算重叠,而对性能的影响最小。

批处理:正如您提到的,批处理是另一种解决方案。如果所有 FFT 的大小都相当相似(如您的示例中所示),您应该能够用不会改变/显着改变输出的数据填充较小的 FFT,以使它们全部具有相同的大小。您可以使用批量调用来处理它们。

我认为在你的情况下将是一个更好的解决方案。这是因为它允许您在执行计算时向设备传输数据和/或从设备传输数据,并且您不会因为必须对空数据执行额外的工作而导致效率低下。

关于我们可以使用 cuFFT 处理多个不同大小的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339663/

相关文章:

c语言打印图形x的平方

c - 为什么 char a = 65 的可移植性不如 char a = 'A'

ubuntu - 如何使用 Amazon EC2 面板运行 GPU 实例?

performance - 有条件地减少 CUDA

machine-learning - 系统面板中的图表在 Wandb (PyTorch) 中表示什么

r - GPU 上的 foreach doparallel

c - 头文件帮助和结构

c - 使用 gcc -Q -v "options enabled"和 "options passed"有什么区别

r - gputools 安装失败 - "Unknown option ' 框架'"

algorithm - 使用 CUDA Thrust 评估非线性偏微分方程的递推关系