HPC性能测试,hpc高性能计算


一、介绍

  说到高性能计算,一般都是利用搭建集群配合加速卡做并行计算实现。但用相同的硬件实现更快的方法,那就是做测试了。比较有名的就是Linpack测试了,Linpack现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark,在高性能领域,就是利用其中的HPL测试进行测试。下面摘一段百科上的解释:
  

  Linpack现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解N元一次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
  Linpack测试包括三类,Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解规模为1000阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上做优化。HPL即High Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。前两种测试运行规模较小,已不是很适合现代计算机的发展,因此现在使用较多的测试标准为HPL,而且阶次N也是linpack测试必须指明的参数。
  HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小N(矩阵大小)、使用到的CPU数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。当求解问题规模为N时,浮点运算次数为(2/3 * N^3-2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3-2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。
  
计算峰值:
  随着产品硬件的不断的升级,整个的计算能力也以数量级的速度提升。衡量计算机性能的一个重要指标就是计算峰值,例如浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值:
  理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的,
理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数×系统中CPU核心数目
  实测浮点峰值是指Linpack测试值,也就是说在这台机器上运行Linpack测试程序,通过各种调优方法得到的最优的测试结果。实际上在实际程序运行过程中,几乎不可能达到实测浮点峰值,更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标,用来表明机器处理能力的一个标尺和潜能的度量。

  此次参加一个高性能的比赛,虽然做的是平台搭建部分,但对此也有些了解。也了解了一下HPCC测试和NAMD测试,下面主要分这两部分来说一下。

二、正文

1、HPCC

  HPCC 全称 HPC Chanllenge Benchmark

  Benchmark 是指一组用来评估硬件或者软件相关性能的基准测试程序

  HPC Chanllenge Benchmark 由一组benchmark组成,共计7个,分别测试了系统7个方面的性能,这7个分别为:

  • HPL
  • stream
  • Random Access
  • PTRANS,
  • Latency/Bandwidth
  • FFT
  • DGEMM

stream:测试内存带宽
内存看作是内存控制器与CPU之间的桥梁与仓库。内存的容量决定“仓库”的大小,而内存的带宽决定“桥梁”的宽窄
Random Access:测试内存刷新的速率(随机存储中电容器需要刷新)
PTRANS:通过多处理器结构中两两之间的通信,来衡量在整个网络的通信能力
Latency/Bandwidth:测试延时与带宽

  • Latency:8 byte 数据从一个节点到另一个节点所需时间
  • Bandwidth:节点间网络通信的带宽

HPL:测试系统在解线性方程组时进行浮点运算的性能

  • 浮点运算:超级计算机应用的场景主要是在科学计算,经常涉及矩阵运算、各种数值模拟等。
  • 超级计算机经常以FLOPS(每秒浮点运算次数)去衡量计算能力
  • HPCC里有3种benchmark是测试浮点计算性能的

FFT:涉及到双精度一维离散傅里叶变换时,浮点运算的速度
DGEMM:在做双精度矩阵乘法时,浮点运算的速度

HPCC的下载地址见:链接

  这个软件13年8月后就没更新了,网上查阅了很多资料,发现使用的人好像也不多,对于高性能计算,大多都是HPL的文章和测试。要想使用好这个软件,需要研读其源代码。
  其中的安装使用方法可参照网站的FAQ以及软件中的README.html
  编译之前,需要下载好相关的库,包括MPI(mpich,mpich2,mvapich,openmpi,platform_mpi,hpmpi……)、MKL/BLAS/GotoBLAS2……、C语言编译器等,前两者集群一般需要自己去找对应的软件,详细配置请自行上网搜一下,和Linpack基本一样。

2、NAMD测试

  NAMD是一个与分子动力学有关,用来高仿真大型生物分子系统的程序。即生物分子建模程序。
  现提供两个工作负载apoa1, f1atpase
  它们可以从 http://www.ks.uiuc.edu/Research/namd/utilities/f1atpase.tar.gz和http://www.ks.uiuc.edu/Research/namd/utilities/apoa1.tar.gz下载。
  

至于性能的话,且看图:
  http://www.ks.uiuc.edu/Research/namd/performance.html

图片来源:链接

NAMD 2.8 在天津超算天河-1A上的测试结果:

表1 每节点不同进程数以及使用不同节点数的NAMD性能(days/ns)比较
数据

这里写图片描述

  结论:为了在天河上达到性能最优,最佳的方案是使用GPU,并且每个节点开6个进程。参照:链接

相关内容