CFD 中的基准性能:如何比较机器和代码?

计算科学 表现 流体动力学 高性能计算 基准测试
2021-12-19 22:07:11

非正式地,在我们的实验室中,我们开发了 2 个指标来比较 CFD 求解器在我们可以访问的机器范围内。一种叫做COMP,代表代码机器性能。这个单一的数字应该代表给定代码在给定机器上的绝对性能。对于给定的运行,它的计算方法是将每个计算/处理核心的单元数乘以执行的迭代次数,然后除以运行时间。在理想情况下,无论使用的核心数量、网格大小或运行持续时间如何,这个数字都应该是恒定的。它直接表示一个核心在一秒钟内可以执行多少个迭代。通过扩展,首字母缩略词 COMP 将用作衡量代码性能的单位。例如,如果给定的运行产生“3.2 k COMPs”,这意味着代码能够处理每核每秒 3200 个单元的一次迭代,或每核每秒处理一个单元的 3200 次迭代,或任何类似的组合。源自 COMP,我们有明显的指标,如速度、加速和效率,它们只是以不同的方式表达原始性能和扩展。

另一个指标旨在比较同一机器上不同方案/代码的效率,它只是查看每单位模拟物理时间所需的 CPU 时间量。当然,这会将许多参数排除在分析之外,例如网格或获得的解决方案的准确性。但是我们努力比较在等效网格/精度上的运行(例如,如果您将 4 阶方案与 2 阶方案进行比较,您可能应该使用一半的点来获得相似的精度)。

您如何看待这些指标?它们对你来说有效吗?您是否知道或使用其他类似指标来对您的 CFD 求解器进行基准测试?

我还应该补充一点,我们通常处理结构化网格上的显式方案,尽管我们现在开始与 DG 代码进行一些比较。对于非结构化网格和/或隐式方案,推理可能不同。

1个回答

归根结底,唯一重要的是挂钟时间选择的精度瓦特(或美元)选择的精度

对于实现和硬件性能,我喜欢用内存带宽和每瓦特或每美元的 flop/s 来衡量。如果根据这些指标,代码的性能远远低于硬件峰值,那么可能存在一些实现效率低下。或者,即使是非常简单的基准测试(如STREAM)的性能也远低于机器峰值,那么机器可能存在瓶颈,从而降低其可实现的性能。

算法的效率真的不能用“每秒细胞数”来衡量,除非是在一个受限的类别中。如果您按该指标进行衡量,我认为您错过了重点。