1

我在双精度模式下在 GTX 780 和 Tesla K40 上比较了一个简单的 3D cuFFT 程序。

在 GTX 780 上我测量了大约 85 Gflops,而在 K40 上我测量了大约 160 Gflops。这些结果让我感到困惑:GTX 780 ha 166 Gflops 的峰值理论性能,而 K40 有 1.4 Tflops。

K40 上 cuFFT 的有效性能与理论峰值性能如此遥远的事实也来自 Nvidia 在此链接上创建的图表。

有人可以向我解释为什么会这样吗?cuFFT 库有限制吗?也许一些缓存动机......

4

1 回答 1

1

非常简短的回答是,GTX 780 上的双精度 FFT 很可能是算术指令吞吐量受限的,但同样的 FFT 操作是 Tesla K40 上的内存带宽受限。

稍长一点的答案是,K40 的峰值内存带宽约为 288 Gb/s,对于 IEEE 754 float64 等 8 字节类型,峰值内存带宽为 36 Gwords/s。FFT 的算术吞吐量将限制为它可以为该内存吞吐量执行的 FLOP 数量。达到峰值双 FLOP/s 将需要每个内存事务接近 40 个双精度操作。显然,FFT 在算术上不够密集,结果是峰值算术吞吐量要低得多。

在 GTX 780 上,其内存带宽与 K40 大致相同,但峰值双精度吞吐量低约 8 倍,似乎可以在可用内存带宽下更接近算术峰值。

于 2015-12-24T10:11:04.483 回答