摘要
该章节介绍了评估HPC计算机的一些常用Benchmark。首先是标准HPC社区Benchmark,包括最重要的HPL,将HPL作为测试套件之一的HPC Challenge,对HPC Challenge进行补充的HPCG,源于书面算法规范的NPB,通过图算法评估的Graph500。最后介绍了这些标准Benchmark以外的社区常用方法-使用小型应用程序评估。本篇笔记只包含各个Benchmark的理论和概念介绍部分,动手操作部分及书后题将在后续实践后记录。
笔记与摘录
4.1 引言
- 历史
名称 | 时间 | 简介 |
---|---|---|
Whetstone | 1972首发,1980更新 | 串行基准测试程序 并非为超算设计,用于评估某些超算中的微处理器性能 |
Dhrystone | 1984 | 衡量整数性能的行业标准 后被SPECint取代 |
Linpack | 1979由Dongarra等引入 | 基于Linpack线性代数包,浮点计算性能估计,求解密集线性方程组的负载 |
- HPC社区常用benchmark
4.2 “好的”Benchmark
-
三个关键属性
- 与目标应用领域相关且对其有意义
- 适用于多种硬件架构
- 被用户和供应商采用,能进行横向比较
-
其他实践属性
- 程序简短
- HPC 基准测试程序通常制定了该程序如何运行和优化的准则
- 评价结果能够存档和共享,用以公开进行对比
- 通常使用标准并行编程API
- 工作负载应代表真实超算应用程序中工作负载的某些集合
4.4 HPL(High-Performance Linpack)
- 求解密集线性方程组,适于浮点密集型计算
- C语言编写,针对分布式内存计算机
- 关键工作负载是下/上(LU)因子分解
- 给定n, O ( n 3 ) O(n^3) O(n3)浮点运算, O ( n 2 ) O(n^2) O(n2)存储器访问。不受内存带宽的影响。
- 扩展资料:Dongara讲座
4.5 HPC Challenge Benchmark
七种评价套件
- HPL 求解浮点数线性方程组
- DGEMM 双精度实数矩阵乘法
- STREAM 通过合成工作负载,评价持续内存带宽
- PTRANS(parallel matrix transpose) 处理器同时成对进行通信,测试架构中网络的通信能力
- RandomAccess 测试内存中整数随机更新率,以千兆更新数/秒(GUPS)为单位
- FFT 双精度复数一维离散傅里叶变换
- B_eff(effecitive bandwidth benchmark) 进行一组不同模式的同步通信测试,测试通信的延迟和带宽
4.6 HPCG(High Performance Conjugate Gradients)
- HPCG旨在对HPL进行补充,对应用程序工作负载中的内存和数据访问模式进行模拟
- 关键工作负载是稀疏线性方程组的求解,该方程由三维离散拉普拉斯偏微分方程与27点模板计算引出。
- HPCG中的求解方法由Krylov子空间迭代法(称为Krylov共轭梯度)得出
- 稀疏矩阵,故每行非零元素存储在连续的内存位置中
- 给定n, O ( n ) O(n) O(n)浮点运算, O ( n ) O(n) O(n)存储器访问
- 五个主要内核:
- 稀疏矩阵向量乘法:第i个结果 x i = Σ j = 0 n i A i j b j x_i = \Sigma_{j=0}^{n_i}{A_{ij}b_j} xi=Σj=0niAijbj,在分布式内存中求解该式子时需要在存储器间交换 b j b_j bj的值,即光环交换(Halo Exchange)
- 对称高斯-赛德尔平滑:线性方程组迭代求解方法,HPCG中使用递归执行,与稀疏矩阵向量乘法具有相似的存储器访问特性。
- 全局点积:最重要的集合通讯(在多个节点间进行通讯)类操作之一,需要计算出一个所有处理器单元均能访问的一个标量结果,这种操作在绝大多数用户应用中都很常见。使用MPI通讯时,会提供MPI全归约操作时间的最小、最大和平均值。
- 向量更新:测试处理器数据流的带宽。
- 多重网格法预处理:采用四种不同大小的网格,相邻两个大小之间为8倍关系,所以最大的网格尺寸约为最小的网格尺寸的4000倍。
- 五个主要内核的代码可以由用户进行修改或替换。
4.7 NPB(NAS Parallel Benchmarks)
一系列能够体现大型流体力学计算性能特征的小程序。包含八个基本问题:
- IS-大整数排序,测试整数计算速度和网络性能
- EP-易并行随机数生成,用于评价积分计算
- CG-共轭梯度近似计算稀疏对称矩阵的最小特征值
- MG-计算三维势场
- FT-用傅里叶变换计算三维偏导方程的时间积分
- BT-解block tridiagonal系统的方程,block大小为5×5
- SP-解Scalar Pentadiagnal系统的方程
- LU-对耦合抛物线型/椭圆形偏导方程进行LU分解
4.8 Graph500
- 用于数据密集型工作负载,针对三个问题:并发搜索、单元最短路径、最大独立集合。Graph500 benchmark 1是指Graph500 search benchmark,用于评价并发搜索性能的基准测试程序。
- Graph500搜索基准测试程序在一张巨大的图上进行广度优先搜索,输出的性能指标时每秒遍历的边数(traversed edges per second, TEPS),搜索结果会被验证以保证准确性,图构造和图搜索的时间都会被记录。
- Graph500不使用flops作为评价指标,导致该基准与HPL和HPCG的比较变得困难。
- 该指标具有两个显著的重要趋势,一是Graph500的指标随时间持平,而HPL的性能则继续成指数级增长;二是对于分布式架构的有效GTEPS/core(giga-traversed edges per second per core)数值要低于共享内存架构的。
4.9 小型应用
- 实际应用程序的较小版本,源于各种科学学科中的计算问题,通常比其他HPC程序更长。
- 小型应用通常不输出标准化度量指标,但是能够提供问题求解时间,以及超算扩展性的强弱信息。
- 为了补充HPC Benchmark的工作并更好地捕获实际应用程序的行为,HPC社区中许多人开始转向使用小型应用程序。
- 小型应用程序可以完成标准HPC Benchmark难以胜任的几项任务:测试内存、网络、加速器、处理器单元的参数以及这些部分交互的性能,尤其适用于当前硬件和编程模型不断涌现的情况。
- 例:Mantevo