多部分基准测试的权重是多少?



我正在为一个学校项目编写基准。这很简单,但我想知道,在现实生活中,各种类型的基准测试使用的典型权重是什么?例如,如果我正在组合整数测试、缓存测试、浮点测试,它们是否应该在最终的"分数"中同等加权?我的预感是,对于许多事情,缓存测试比原始算术更重要,对于许多事情,RAM 速度是一个重要因素。有共识吗?

没有通用的权重集。

不同的实际工作负载具有不同的瓶颈或不同的权重。

没有一个数字可以告诉你计算机有多快。程序 X 在计算机 A 上的运行速度可能比 B 快,但程序 Y 在计算机 B 上运行得更快,这是可能的(并且在现实生活中发生

(。为微基准选择一组权重完全取决于您希望数字的含义,以及您希望它作为粗略指标的工作负载类型。


例如,密集矩阵通常可以使FMA执行单元吞吐量饱和,因为它对N^2数据执行O(N^3(工作。 通过仔细的缓存阻塞,您可以获得大部分 L1d 缓存命中,并避免每个 FMA 执行超过 1 次 SIMD 矢量加载。 DRAM/缓存带宽必须足够高才能跟上,但大多数存储/重新加载都在 L1d 缓存中(当然也必须能够跟上(。

但其他工作负载可能会成为内存带宽或延迟的瓶颈,并且根本不关心 FPU 吞吐量。 例如,AMD 锐龙 1 每个时钟可以执行 1 个 128 位 FMA,而英特尔 Haswell 及更高版本每个时钟可以执行 2 个 256 位 FMA。 但是 Ryzen 对于其他一些工作负载来说速度更快或几乎相等。

在多核系统上,一些程序是单线程的,只关心单核吞吐量,而其他程序则具有良好的扩展性,并在具有许多较慢内核的机器上获得很大的加速。 或者,他们可能关心核心间延迟与聚合内存带宽。

最新更新