Zac*_*ack 0 hpc supercomputers
我对群集上运行的实际应用程序性能与群集峰值性能有疑问.
假设一个HPC集群报告它的峰值性能为1 Petaflops.这是怎么计算的?对我来说,似乎有两个测量矩阵.一个是基于硬件计算的性能.另一个是运行HPL?我的理解是否正确?当我正在全面阅读系统上运行的一个真实应用程序时,开发人员提到它可以达到峰值性能的10%.这是如何测量的以及为什么它无法达到最佳性能?
谢谢
峰值性能是系统理论上能够提供的.它是CPU核心总数,核心时钟频率以及每个核心每个核心产生的FLOP数量的乘积.在实践中永远不会达到这种性能,因为没有真正的应用程序包含100%完全矢量化紧密循环,它只对L1数据高速缓存中保存的数据进行操作.在许多情况下,数据甚至不适合最后一级缓存,并且内存接口通常不够快,无法以与CPU处理它相同的速率传送数据.来自HPC的一个普遍存在的例子是稀疏矩阵与向量的乘法.它是如此内存密集型(即每次算术操作的许多加载和存储),在许多平台上它只能达到峰值性能的一小部分.
当多个节点大规模联网在一起时情况变得更糟,因为数据传输可能会带来巨大的额外延迟.这些情况下的性能主要取决于本地数据处理和数据传输的比率.HPL在这方面特别好 - 它执行了大量的矢量化本地处理,并且不会在CPU /节点上移动太多数据.这是不是与许多现实世界的并行程序,也就是许多质疑HPL的适用性时下评估集群性能的原因的情况.替代基准测试已经出现,例如HPCG基准测试(来自为您提供HPL的人员).