除了线性代数之外,有用的著名数值性能基准?

计算科学 基准测试
2021-12-19 19:06:15

我目前正在测试一些新的(嵌入式)处理器的双精度数值性能。

不同平台的 FPU 功能差异很大;例如,ARM Cortex-A8 有一个双精度 FPU,每次操作需要 9 个周期。Cortex-A9 也需要 9 个周期,但能够完全流水线化,而 Cortex-A15 显然(终于!)具有单周期双倍。

到目前为止,我只是使用线性代数(例如 Eigen 或 ATLAS)进行基准测试,这代表了我们自己计算需求的一个很好的子集,但由于有充分记录的 原因,它作为基准是不足的

我在看HPC Challenge之类的东西,或者许多其他东西之一(见幻灯片 15),但这有点像给饥饿的人一份菜单!

那么,哪些数值基准(如果有)符合以下标准?

  • 哪些其他基准(即使有缺陷/有限)被普遍接受?“普遍接受”的一个很好的例子是能够在没有太多时间投资的情况下使用谷歌找到常见(商品)处理器的结果。
  • 由于我通常对嵌入式系统感兴趣,我更喜欢可以干净地交叉编译的应用程序 - 自调整包对嵌入式系统来说是一个痛苦(例如 ATLAS 是一个很好的例子)
  • 更好的是,仅最低限度地依赖操作系统服务的软件包(或者更好的是,仅 libc 或类似服务)允许在更广泛的系统上进行测试。

更新:一些上下文

线性代数确实涵盖了我们计算需求的很大一部分(在 OP 中列出)。但是,在可以流水线化的操作中,它确实受益匪浅。对于我们所有的计算需求来说,这并不是普遍适用的——在我们的代码库中散布着多个较小的求解器和各种类型的算法。我怀疑我知道所有这些。另外,由于我们通常在发布后将嵌入式系统维护 5 年(或更长时间!),我们当前的应用程序套件可能无法代表未来的需求,我无法完全预测其性质(注 1)。

第二个原因是我无法为市场上存在的数百种不同的SoC购买开发套件、移植代码、构建交叉编译器、运行基准测试等。如果很少有众所周知的基准测试无处不在(Coremark就是一个例子,但它不是特定于数字的),那么它会使处理器选择的工作变得容易得多。

注 1:一个很好的例子是产品生命周期的一半,开发了一个具有大量分支的浮点应用程序(由一位前 HPC 人员开发,所以我希望他知道自己在做什么!)。如果我们选择了一个流水线非常密集的处理器,我们可能会被抓住。

1个回答

我建议查看 SPEC CPU2006 基准,特别是浮点基准。它们很多且复杂,因此您可能不一定想自己运行它们(也需要花钱),但您可以在http://www.spec.org找到结果