2017年上半年的TOP500排行榜也已出炉,之前在文章“2017全球超级计算Top500和Green500榜单出炉”中,看到中国的太湖之光、天河2号继续保持第一、第二,中国超算在该Benchmark测试中已经连续多年卫冕夺冠了,但是让我讲讲接下来你可能不知道的事。
TOP500排名基于Linpack BenchMark性能(最新版HPL 2.0规范从2008年一直用到现在),不过随着时间的推移,应用程序对更复杂计算的需求已变得原来越普遍,TOP500创始人之一的田纳西大学教授Jack Dongarra认为Linpack性能已经过时,大家也意识到单看CPU性能的弊端,开始使用HPCG(The High Performance Conjugate Gradients)性能来全面衡量超算性能。
天河2号之前也是HPCG(高度共轭梯度基准测试)性能第一名(2016年上半年度的HPCG性能榜单,中国的天河2号是第一,日本K位列第二),但从2016年下半年开始,第一被日本K超算系统夺走,当时K超算系统在TOP500中的排名目前是第七。
与Linpack关注线性方程的计算性能不同,HPCG使用更复杂的微分方程计算方式。Linpack衡量的是线性方程计算的速度和效率,无法测量这些更加复杂的计算程序。由于越来越多的应用程序采用微分方程计算方式,所以每一轮全球超级计算机500强排行榜的Linpack性能数据与真实的数据之间的差距将越来越大。
简单来说,Linpack更考验超算的处理器理论性能,而HPCG更看重实际性能,对内存系统、网络延迟要求也更高,所以任何HPC超算测出来的HPCG性能要比Linpack性能低得多,基本报中告有个HPCG/HPL比率可衡量计算效率,大部分超算的比例都在5%以内,1-3%的比比皆是。
HPCG标准从2014年开始正式参与排名,2017上半年的HPCG性能排行榜中,国内的天河2号以580TLFOPS位列第二,日本K(京)以602TFLOPS位列第一, TOP500第一的太湖之光HPCG性能是480TFLOPS,位列第三。太湖之光的HPCG/HPL效率只有0.4%是HPCG前10名中效率最低的。
关于HPC系统能力BenchMark排名,除了TOP500、Green500和HPCG之外,还有一个Graph500排名和Green Graph 500排名,Green Graph 500使用与Green500相同的性能指标,但它是根据每瓦特性能排名,即采用Green 500测试模型测试但配合Top500(HPL)使用每瓦特性能排序。
从2017年上半年的Graph500榜单来看,日本K超算也拿下了第一名,第二名是中国太湖之光,天河2号已经处于第八名的位置。
Graph500专注于数据密集型负载BenchMark基准,目标是提高对复杂数据问题的认识,而不是专注于Top500所依赖的HPL(High Performance Linpack)等计算基准。在2010年的国际超级计算大会上第一次发布测试基准值。新版本的列表每年发行两次,用于对超级计算机进行排名的主要性能指标是GTEPS( Giga-Traversed Edges per Pecond千兆每秒边缘遍历)。
Graph500使用的基准测试强调系统的通信子系统,而不是计算双精度浮点数,它是基于大无向图中的广度优先搜索(平均程度为16的Kronecker图)。基准测试中有两个计算内核,第一个内核是生成图形并将其压缩为稀疏结构CSR或CSC(Compressed Sparse Row/Column); 第二个内核对一些随机顶点进行并行BFS搜索(每次运行64次搜索迭代)。
最后一起讨论一下,在HPC场景我们经常用到的测试基准,这些基准应用于不同HPC场景,主要从应用基准和微观基准来进行描述。应用基准是偏向于某种应用的BenchMark,测试更具有针对性;然而微观基准则更具普适性,更加偏向于纯粹的工具性能测试。
上图展现的是常见的应用基准测试实例,除了HPCG外,主要包括GTC-P 、Meraculous、MILC、MiniDFT 、MiniPIC和PENNANT等。
GTC-P(Gyrokinetic Toroidal Code)通过使用粒子单元算法求解Vlassov-Poisson方程来模拟离子通过托卡马克的运动。在每个PIC(particle-in-cell)时间步长期间,粒子的电荷分布被内插到网格上,泊松方程在网格上求解,电场从网格内插到粒子,并且根据电场更新粒子的相空间坐标。
Meraculous是一种大规模并行基因组组装基准,构造并遍历存在于冗余短序列输入数据集中的长度为k(k-mers)的所有重叠子串的de Bruijn图。通过遍历de Bruijn图,并发现所有(可能断开的)线性子图,Meraculous能够构建基因组数据的高质量连续序列。
MILC基准代码表示由用于研究量子色力学(Quantum Chromodynamics)的MIMD晶格计算(MILC)协作的一组代码,属于亚原子物理学强相互作用的理论,通过并联机器进行四维格子规格理论的仿真。属于物理研究和模拟场景下的基准。
MiniDFT是用于建模材料的平面波密度泛函理论(Density Functional Theory)的模拟应用程序。MiniDFT使用LDA或PBE交换相关函数计算Kohn-Sham方程的自相一致解。对于自相一致的场循环的每次迭代,构建Fock矩阵,然后对角化。为了构建Fock矩阵,使用快速傅立叶变换将平面波基(其中最容易计算的动能)转换为实际空间(其中电位被评估)和返回的轨道。
MiniPIC是解决具有反射壁的任意域中的静电场中的离散Boltzman方程。MiniPIC基准测试使用非结构化的基于hex或tet的网格以及用于粒子网格的静态分区。粒子被跟踪到每个单元格交叉区,打包后并使用MPI传递到相邻的处理器。主要代码库使用了Trilinos数学库中的Tpetra对象进行矩阵/向量操作。
PENNANT是一款用于高级架构研究的应用程序。它具有用于操纵包含任意多边形的二维非结构化有限元网格的数据结构。PENNANT使用几何域分解支持MPI并行性,对使用MPI调用的处理器上实现的点数据进行采集和散射操作,还支持使用OpenMP或CUDA的线程并行。
SNAP作为代理应用程序来建模现代离散坐标中性粒子传输应用程序的性能。SNAP被认为是Sweep3D的更新,旨在用于混合计算架构。它是由洛斯阿拉莫斯国家实验室代码PARTISN建模的。
UMT是建立在多个核分布式存储,多节点并行计算机系统上,执行三维非结构化空间网格上的时间依赖性,能量依赖性,离散坐标和非线性辐射问题的解决方案。为了实现极大的可扩展性,应用程序利用节点之间的消息传递和在节点内角度的线程算法进行空间分解。
下面我们介绍下微观基准,微观基准则更具普适性,经常在项目中客户RFP中出现,更加偏向于纯粹的工具性能测试
Cro***oads/N9 DGEMM基准测试是一种简单,多线程,密集矩阵乘法测试。该代码旨在测量单个节点的持续浮点计算速率。
IOR是最常见的BenchMark基准,旨在测量POSIX和MPI-IO级别的并行I/O性能。
Mdtest是一个MPI协调的元数据基准测试,可以对文件和目录执行文件操作,基于不同操作报告性能。
STREAM 基准用来测试持续的计算内存带宽。Cro***oads/N9内存带宽基准测试是John D. McCalpin最初编写的STREAM基准测试版本的升级版。
至此我们了解了TOP500、Green500、HPCG、Graph500和Green Graph 500业界知名HPC系统排行榜,以及IOR、Mdtest和STREAM等HPC场景中的BenchMark测试方法。
尽管如此,这些基准都能从某个视角展现TOP超级计算系统的能力,如果从这个角度将,那么Linpack Benchmark的时代还并未过去。HPCG将只是作为全球超级计算机500强榜单排行的另一个可用标准,更是对TOP500计算系统进行排名的高性能Linpack(HPL)基准测试的补充。