我是一名业余爱好者,致力于将多个文件的FFT运算/执行并行化。比方说,我有1000个文件,每个文件都有不同大小的实际数据,即如果一个文件有22000个值,其他文件可以有15000个值,下一个文件可以有19000个值,依此类推。
有关如何实现这一点的任何想法?如果您的答案是通过 BATCH ,请解释如何?
答案 0 :(得分:1)
您的问题有两种标准解决方案:
Streams :cuFFT通过cufftSetStream函数支持CUDA流。您想要使用的模式是使用单独的流来协调每个FFT。这可能允许您重叠多个FFT的处理。此外,往返GPU的副本可以与计算重叠,对性能影响最小。
批处理:正如您所提到的,批处理是另一种解决方案。如果你的所有FFT都是相当相似的大小(如你的例子),你应该能够用不会改变/显着改变输出的数据填充较小的FFT,以使它们具有相同的大小。您可以使用批量调用来处理它们。
我认为在你的情况下流将是一个更好的解决方案。这是因为它允许您在执行计算时将数据传输到设备和/或从设备传输数据,并且因为您不必在空数据上执行额外的工作而导致任何低效率。