ISPASS'18 论文笔记: A Workload Characterization of the SPEC CPU2017 Benchmark Suite

这篇论文是亚利桑那大学的 Ankur Limaye 和 Tosiron Adegbija 发表在 ISPASS’18 上的工作。主要是对 SPEC CPU2017 的负载分析和去冗余并比较了和 SPEC CPU2016 的相似点和差异。

这里我主要记录一下论文中对于 SPEC CPU2017 去冗余的部分。

论文地址: here.

相关资料: SPEC CPU2017 Command Lines[1]

1. 动机

SPEC CPU 2017 作为体系结构领域最主流的通用基准测试集之一,对下一代处理器、存储子系统、编译器的设计和优化影响巨大。

… significantly influence design and optimization research for next-generation microprocessors, memory subsystems, and compilers.

SPEC CPU2017 包含 43 个应用,以及 4 类 mini-suites: SPECrate 2017 Integer, SPECrate 2017 Floating Point, SPECspeed 2017 Integer 以及 SPECspeed 2017 Floating Point [2].

图1. SPEC CPU2017 介绍

对 SPEC CPU2017 负载特征的理解至关重要 (如访存特征、各类指令比例等),但是完全执行 SPEC CPU2017 通常需要花费比较长的时间 (时间一般是按天计,在模拟器中可能会要数周),因此在具体实践中,我们通常只是选取其中某一个子集来测试。此时,如何科学地选取一个子集就比较重要了,这也是论文主要关注的一个点。这个子集的选择应该尽量增加负载执行特征的多样性减少负载之间的冗余性

However, an arbitrary subset can lead to incorrect or inaccurate results and inferences. The subset must be carefully selected to maximize the variety of execution characteristics, and minimize redundancy in the applications.

2. 主要思想

  1. 首先统计收集一些性能指标。比如 IPC、 微体系结构无关的特征 (指令混合、内存占用) 和微体系结构有关的特征 (Cache 和分支行为)。

    For the comparative analysis, we have considered the IPC, microarchitecture-independent characteristics like instruction mix and memory footprint, and microarchitecture-dependent characteristics like the cache and branch behaviors.

图2. 收集的性能指标
  1. 然后,对上面收集的数据做 PCA 降维分析PCA 选出若干主成分。经过 PCA 投影变换之后,有下面的一些性质:
    • 线性变换/投影: 变换后总方差不变
  • 正交性: 主成分互不相关,相互正交
  • 方差 从大到小 排序,便于最小损失降维
  1. Factor Analysis 分析原始特征对各个主成分 (PC) 的影响程度

  2. 根据投影后的坐标,进行层次聚类 (Hierarchical Clustering)

    • 初始化为每个数据点都对应一个簇;
    • 然后,按照最小连接距离逐个聚类,每次减少一个簇,重复这个步骤;
    • Sum of Squared Error (SSE) 来衡量聚类效果。SSE 即各个 cluster 的数据点到其聚类中心的欧式距离之和。
图3. 层次聚类 Dendrogram of: (a) rate, and (b) speed mini-suites
  1. 根据 SSE执行时间帕雷托最优方案 (Pareto-optimal solution) 来选择簇 (cluster) 的数目

图中中帕雷托最优状态分别是 11、9.5的样子。但是论文里面说的12、10,我感觉论文数据可能写错了。

图4. 帕雷托最优方案

帕累托最优 (Pareto-optimal):帕雷托最优是指资源分配的一种理想状态。给定固有的一群人和可分配的资源,如果从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好,这就是帕雷托改善。帕雷托最优的状态就是不可能再有更多的帕雷托改善的状态;换句话说,不可能在不使任何其他人不受损的情况下再改善某些人的境况[3]。另外一句话总结就是:从此以后,非损人不能利己[4]

在这里,就是说在帕累托最优状态下,调整簇 (cluster)的数目,都不能在减小SSE的同时还不增加执行时间,也不能在减小执行时间的同时还不增加SSE。

3. 一些思考

  • Pareto-optimal solution 没有考虑整体,不一定是 global optimal 的。比如说有一些人宁愿负载冗余、牺牲一些时间成本,也要负载多样性、完整性、代表性。
  • 但是,这种去冗余的方法应该可以学习借鉴的。

4. 参考链接


  1. SPEC CPU2017 Command Lines

  2. SPEC-CPU2017-Overview

  3. 维基百科-帕雷托最优

  4. 知乎:如何通俗地解释「帕累托最优」(Pareto optimum)?

坚持原创技术分享,您的支持将鼓励我继续创作!