计算CUFFT的性能

时间:2012-02-17 23:03:44

标签: cuda fft cufft

我在块(N * N / p)上运行CUFFT分为多个GPU,我有一个关于计算性能的问题。首先,关于我是如何做的:

  1. 向每个GPU发送N * N / p块
  2. p GPU中每行的批量1-D FFT
  3. 获取N * N / p块返回主机 - 对整个数据集执行转置
  4. Ditto Step 1
  5. Ditto Step 2
  6. Gflops = ( 1e-9 * 5 * N * N *lg(N*N) ) / execution time

    和执行时间计算如下:

    execution time = Sum(memcpyHtoD + kernel + memcpyDtoH times for row and col FFT for each GPU)

    这是评估多个GPU上CUFFT性能的正确方法吗?还有其他方法可以代表FFT的性能吗?

    感谢。

1 个答案:

答案 0 :(得分:2)

如果您正在进行复杂变换,则操作计数是正确的(对于实值变换,它应该是2.5 N log2(N)),但GFLOP公式不正确。在并行多处理器操作中,通常的吞吐量计算是

operation count / wall clock time

在您的情况下,假设GPU并行运行,或者测量执行时间的挂钟时间(即整个操作花费的时间),或者使用它:

execution time = max(memcpyHtoD + kernel + memcpyDtoH times for row and col FFT for each GPU)

目前,您的计算代表了串行执行时间。允许来自multigpu方案的开销,我希望你得到的计算性能数值更低比在单个GPU上完成的等效变换。