0

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

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

4

1 回答 1

1

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

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

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

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

于 2014-08-16T12:04:20.680 回答