【发布时间】:2016-03-22 11:15:42
【问题描述】:
我在 GTX 780 和 Tesla K40 上以双精度模式比较了一个简单的 3D cuFFT 程序。
在 GTX 780 上我测得大约 85 Gflops,而在 K40 上我测得大约 160 Gflops。这些结果让我感到困惑:GTX 780 ha 166 Gflops 的峰值理论性能,而 K40 有 1.4 Tflops。
cuFFT 在 K40 上的有效性能与理论峰值性能如此遥远的事实也来自 Nvidia 在this link 创建的图表。
有人可以向我解释为什么会这样吗? cuFFT 库有限制吗?也许是一些缓存动机......
【问题讨论】:
-
内存带宽限制?我怀疑 FFT 是否有足够的 FLOP 每个内存事务来达到峰值算术吞吐量。
-
正如 talonmies 所指出的,认为所有代码都受计算限制是一种常见的误解。事实上,大多数现存的 HPC 代码都受到内存带宽的限制。因此,GPU 的计算限制仅作为计算受限代码的性能预测器相关。如果代码受内存限制,那么 2 个 GPU 的内存带宽比将是一个更相关的预测指标。如果代码有时受计算限制,有时受内存限制,那么实际的预测变量可能是带宽限制和相关 GPU 的计算限制的比率组合。
-
@RobertCrovella:我猜 GTX780 是双精度算术限制的,而 K40 是内存带宽限制的(它们的内存带宽大致相同,不考虑 ECC 对 K40 的作用) )
-
是的,同意,所以除了我的“比率”声明之外,您还可以说您可能无法使用单个指标来比较一个 GPU 与下一个 GPU 的另一个原因是限制因素可能会从一个 GPU 更改为下一个。我想这可能隐含在您的原始评论中。显然,这也可能取决于我们谈论的是
float还是doubleFFT——尽管这个问题是double特有的。 -
感谢大家的回答