我在块(N * N / p)上运行CUFFT分为多个GPU,我有一个关于计算性能的问题。首先,关于我是如何做的:
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的性能吗?
感谢。
答案 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上完成的等效变换。