基准测试程序(Benchmark)用来测量机器的硬件最高实际运行性能,以及软件优化的性能提升效果,可分为微基准测试程序(Microbenchmark)和宏基准测试程序(Macrobenchmark)

微基准测试程序用来测量一个计算机系统的某一特定方面,如CPU定点/浮点性能、存储器速度、I/O速度、网络速度或系统软件性能(如同步性能);宏基准测试程序用来测量一个计算机系统的总体性能或优化方法的通用性,可选取不同应用,如Web服务程序、数据处理程序以及科学与工程计算程序。

微基准测试程序

STREAM:由John McCalpin设计的测量持续存储器带宽和计算速度的测试程序,包含Copy、Scalar、Add和Traid四个函数,分别用来执行向量拷贝、向量更新拷贝、向量加法和向量更新。STREAM2包含Fill、Copy、Daxpy和Sum四个函数,分别用来执行向量赋值、向量拷贝、向量更新和向量求和。STREAM的指标为实测存储器带宽(MB/s)。

LMBENCH:用来测量OS开销和处理器、缓存、存储器、网络以及磁盘之间的数据传输能力。

宏基准测试程序

Linpack:20世纪70年代中期开发了IAnpack软件用于解线性方程,因为Linpack使用广泛且其指标几乎可以在所有参加测试的系统上得到,国际上一般用Linpack测试出的最高性能指标作为衡量机器性能的标准。每年两次更新并发布的世界超级计算机500强排行榜(TOPS00)即按Linpack测试值排序。

LINPACK是线性系统软件包(Linear system package) 的缩写,计算机硬件的不断的升级带来了系统处理性能持续的提高,如何的对平台的性能作出正确的判断就是性能测试的主要目标,业界也有多种测试基准,有的是基于实际的应用种类如TPC-C,有的是测试系统的某一部分的性能,如测试硬盘吞吐能力的IOmeter,测试内存带宽的stream。

Linpack测试包括三类:Linpack100、Linpack1000和HPL。

Linpack100求解规模为100阶的稠密线性代数方程组,只允许采用编泽优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。

Linpack1000要求求解规模为1000阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化。

HPL(High Performance Linpack)也叫高度并行计算基准测试,对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其他任何优化方法。

前两种测试运行规模较小,已不适合现代计算机的测试,因此一般使用Linpack即指HPL。

HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小N(矩阵大小)、使用到的CPU数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。当求解问题规模为N时,浮点运算次数为(2/3 * N^3+2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3+2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。

HPLinpack的核心算法是求解阶 为n 的线性方程:Ax=b,A∈Rn×n ,x,b∈Rn 。算法首 先使用行选主元高斯消元法对系数矩阵 [A,b]进 行 LU 分 解:Pr[A,b]= [LU], [ ]y ,Pr,L,U ∈ Rn×n,y∈ Rn 。LU 分解 完 成 后,解 原 方 程 等 价 于 求解上三角方程Ux =y。 从上 述 介 绍 可 以 看 出,HPLinpack 测试 程 序 的执行分为 LU 分解 和 回 代 两 个 过 程。其 中,LU 分解过程的浮点操作次数为 (2/3)n3 - (1/2)n2 (-(1/2)n2)在计算机中相对影响很小,忽略不计); 回代过程的浮点操 作 次 数 为2n2 。

所以总的浮点操作运算次数为:分解操作运算次数+回代浮点运算次数(2/3 * N^3+2*N^2)。

LINPACK主要的特色是:

1、率先开创了力学 (Mechanics) 分析软件的制作。

2、建立了将来数学软件比较的标准。

3、提供软件链接库, 允许使用者加以修正以便处理特殊问题, (当然程序名称必须改写, 并应注明修改之处, 以尊重原作者, 并避免他人误用。)

4、兼顾了对各计算机系统的通用性, 并提供高效率的运算。

LINPACK 还是广泛地应用于解各种数学和工程问题,是数学库测试程序。 也由于它高效率的运算, 使得其它几种数学软件例如IMSL、 MATLAB 纷纷加以引用来处理矩阵问题, 所以足见其在科学计算上有举足轻重的地位。

Linpack现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解N元一次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。

计算峰值

随着产品硬件的不断的升级,整个的计算能力也以数量级的速度提升。衡量计算机性能的一个重要指标就是计算峰值,例如浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值:

理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的,

理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数×系统中CPU核心数目。

实测浮点峰值是指Linpack测试值,也就是说在这台机器上运行Linpack测试程序,通过各种调优方法得到的最优的测试结果。实际上在实际程序运行过程中,几乎不可能达到实测浮点峰值,更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标,用来表明机器处理能力的一个标尺和潜能的度量。

硬件准备

准备硬件平台的配置

升级到最新的BIOS、BMC等版本

调整对性能有影响的参数设置

软件准备

操作系统的准备。由于OS自身也会占用系统资源,因此一般会使用linux作为linpack测试的OS平台,采用最新的内核版本的linux,这样可以充分的发挥出硬件的新的特性,发挥出平台的计算性能;在系统启动后,将一些没有必要的系统守护进程去掉,可以运行ntsysv命令,关闭除了irqbalance 和 messagebus.之外的系统服务进程,也可以节省系统的资源;并且将操作系统启动到第3级,不能进入图形方式。

linpack学习记录相关推荐

  1. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  2. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  3. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  4. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  5. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  6. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  7. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

  8. java之字符串学习记录

    java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...

  9. Redis的学习记录

    Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...

  10. Django学习记录-1

    2019独角兽企业重金招聘Python工程师标准>>> 作为Django的初学者,记录下我的学习历程,加深一下记忆(工作中用java,所以很容易忘记),如果有写的不对的地方,还望大家 ...

最新文章

  1. STM32f1的中断系统
  2. 【黑金视频连载】FPGA NIOSII视频教程(12)--时间戳定时器实验
  3. 羊皮卷的故事-第十章-羊皮卷之三
  4. Linux下进程间通信的六种机制详解
  5. Github GUI 托管代码教程
  6. QuickSkin简单学习--控制结构
  7. 用Java弹出创建新的消息通知
  8. 【数据挖掘导论】——数据质量
  9. 西浦与杭电计算机选哪个,四邮四电究竟谁强谁弱?哪三所大学报考更有性价比?...
  10. 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
  11. 毫秒级百万数据分页存储过程(mssql)
  12. 百度Android在线语音识别SDK用法
  13. 爬虫的步骤解析内容xpath介绍_Xpath的基本方法和使用详解 Python爬虫中最好用解析库...
  14. [R语言绘图]气泡图symbols
  15. 所有用户账户被禁用该怎么办?
  16. 程序写情诗|专属于程序员的浪漫
  17. freeSurfer颅骨剥离
  18. DOS命令-格式化磁盘
  19. mysql数据库引擎面试,mysql数据库引擎面试
  20. Implement int sqrt(int x).

热门文章

  1. php网页无法显示图片,XP系统中,网页图片无法显示怎么解决?
  2. Context 是什么意思
  3. python实现em聚类算法_EM算法的python实现的方法步骤
  4. Oracle 12c:配置em,解决em登录问题
  5. 冬瓜哥祝大家新年快乐!
  6. gnome 如何自定义样式_在Gnome 3中自定义字体
  7. cc域名转入可以吗?其特点是什么?
  8. Java-Preferences用法-入门
  9. NOTA-NHS ester,1338231-09-6,双功能配体的大环化合物
  10. php 中 normdist,excel中的normdist