您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实验4linpack
1《系统结构》实验4准备知识(自学)一、HPL与HighPerformanceLinpack目的与要求:使学生掌握Linpack和hpl的背景知识主要内容:1、Linpack背景及内容(1)背景介绍LINPACK全名LinearEquationsPackage,是近年来较为常用的一种计算机系统性能测试的线性方程程序包,内容包括求解稠密矩阵运算,带状的线性方程,求解最小平方问题以及其它各种矩阵运算。它最早由来自Tennessee大学的超级计算专家JackDongarra提出。程序用FORTRAN编写,在此基础上还有C,JAVA等版本。Linpack使用线性代数方程组,利用选主元高斯消去法在分布式内存计算机上按双精度(64bits)算法,测量求解稠密线性方程组所需的时间。Linpack的结果按每秒浮点运算次数(flops)表示。第一个Linpack测试报告出现在1979年的Linpack用户手册上,最初LINPACK包并不是要制订一个测试计算机性能的统一标准,而是提供了一些很常用的计算方法的实现程序,但是由于这一程序包被广泛使用,就为通过Linpack例程来比较不同计算机的性能提供了可能,从而发展出一套完整的Linpack测试标准。(2)测试标准的内容LINPACK标准可以解决的问题有:1)各种矩阵分解(Matrixfactorization),如LU分解,Cholesky分解,Schur,Gauss分解,SVD分解,QR分解,generalizedSchur分解等2)矢量运算(Vectoroperation),如Copy,Add,scalarmultiple,Interchange3)存储模式(StorageModes),如full,banded,symmetricLinpack原始版本的问题规模为100×100的矩阵,目前的Linpack测试分成三个层次的问题规模和优化选择:----100×100的矩阵在该测试中,不允许对Linpack测试程序进行任何修改,哪怕是注释行。所有的优化工作只能在编译器里完成。----1000×1000的矩阵该测试也叫“面向峰值性能的测试”,在该测试中,要求有所放宽,允许对算法和软件进行修改或替换,并尽量利用系统的硬件特点,以达到尽可能高的性能。但是所有的优化都必须保持和标准算法如高斯消去法相同的相对精度,而且必须使用Linpack的主程序进行调用。测试者可修改或替换其中的过程调用例程DGEFA和DGESL。其中DGEFA是Linpack软件包中标准的高斯消去LU分解过程,而DGESL是根据分解后得到的结果回代求解过程。----针对大规模并行计算系统的测试,即HighlyParallelComputing。在这一测试中,问题规模限制被取消,针对现代的并行计算机,要求最宽松,即用户可对任意大小的问题规模,使用任意个数的CPU,使用各种优化方法(必须基于高斯消去法)来执行该测试程序,寻求最佳的测试结果。2其实HPL(主页:)就是这样的一个大规模高度并行的测试版本,也是当今用来进行世界前500超级计算机排名的公用测试标准(网址:)。目前,用Linpack基准测试出的最高性能指标已经成为衡量机器性能的标准之一,这个数字可以作为对系统峰值性能的一个修正。通过测试求解不同问题规模的实际计算速度值,我们不仅可以得到达到最佳性能的问题规模和性能测试数据。2、HPL基准测试(1)概述HPL,即HighPerformanceLinpack,目前已经成为国际标准的Linpack基准测试程序,其1.0版于2000年9月发布,是第一个标准的公开版本并行Linpack测试软件包,一般用于全世界TOP500超级计算机上的并行超级计算机排名。HPL测试标准的用户自由度要大很多,使用者可以选择矩阵的规模,分块大小,分解方法等等一系列的各种参数,都是按需要更改的。HPL软件包需要在配备了MPI环境下的系统中才能运行,还需要底层有线性代数子程序包BLAS的支持(或者有另一种向量信号图像处理库VSIPL也可)。HPL软件包不仅提供了完整的Linpack测试程序,还进行了全面细致的计时工作,最后可以得到求解的精确性和计算所花费的总时间。该软件在系统上所能达到的最佳性能值适合很多因素有关的。(2)主算法该软件包是用来求一个N维的线性方程组Ax=b的解,首先通过选局部列主元的方法对Nⅹ(N+1)的[Ab]系数矩阵进行LU分解成如下形式:[Ab]=[[L,U]y]由于下三角矩阵L因子所作的变换在分解的过程中也逐步应用到b上,所以最后方程组的解x就可以由转化为求解上三角矩阵U作为系数矩阵的线性方程组Ux=y从而得到。为了保证良好的负载平衡和算法的可扩展性,数据是以循环块的方式分布到一个PxQ的由所有进程组成的2维网格中。Nx(N+1)的系数矩阵首先在逻辑上被分成一个个NbxNb大小的数据块,然后循环的分配到PxQ进程网格上去处理。这个分配的工作在矩阵的行、列两个方向同时进行。如下图所示:(左图为整个矩阵被分成小块以后,右图为各小块分配到各个进程后的情况)3在LU分解的主循环中使用的是向右看(right-looking)的分解法,也就是说,在每次迭代过程对一个nb列的板块分解,然后剩余的子矩阵被更新。因此,我们也可以注意到这里的板块在逻辑上被分为nb大小的子块,而这个Nb恰好就是前面数据分布中使用的Nb。在前面所提到的N,Nb,P,Q都是可以根据集群的具体配置和用户需要而随时修改的,也是HPL测试中十分关键和重要的几个参数。详细内容请看后面。二、HPL的安装及使用目的与要求:使学生掌握HPL的安装及运行。主要软件包:hpl-2.1.tar.gzGotoBLAS2-1.13.tar.gzopenmpi-1.6.5.tar.gz主要内容:1.HPL的安装(1)安装gotoblas注:出于提高性能的因数,选择GOTOBLAS,作为HPL调用的底层线性代数子程序包目前最新版本为GotoBLAS2下载GotoBLAS2-1.13.tar.gz(网址)执行步骤:在usr/local/mathlib/goto下解压:$tar-zxvfGotoBLAS2-1.13.tar.gz$cdGotoBLAS2$make(TARGET=NEHALEM)注:可直接输入#make既可也可自己选择参数类似$makeCC=gccBINARY=64TARGET=NEHALEM依次是编译器库的位数和cpu的类型(architecture),具体可选择的参数可从GotoBLAS2的目录下02QuickInstall.txt的查找4cpu的类型(architecture)需要根据cpu的型号自行网上查找,可使用命令$cat/proc/cpuinfo|grepname|cut-f2-d:|uniq–c查看cpu的型号可从目录下的getarch.c查看目前支持的architecture,新一点的intelcpu需要指定为TARGET=NEHALEM编译出现错误请先输入$gmakeclean再重新开始如果成功则显示类似如下图:(3)安装openmpi(4)安装HPL下载hpl-2.1.tar.gz(网址:)在用户目录下解压:$tar–zxvfhpl-2.1.tar.gz$cdhpl-2.1根据机器的情况复制Makefile模板:$cpsetup/Make.Linux_PII_CBLASMake.Linux$viMake.Linux如下根据具体情况修改Make.LinuxARCH=LinuxTOPdir=/home/用户目录/hpl-2.1MPdir=/home/用户目录/openmpi安装目录/openmpi-1.6.5MPinc=$(MPdir)/includeMPlib=-L$(MPdir)/libLAdir=usr/local/mathlib/goto/GotoBLAS2的安装目录LAlib=$(LAdir)/libgoto2_nehalemp-r1.13.aHPL_INCLUDES=-I$(INCdir)-I$(INCdir)/$(ARCH)-I$(LAinc)-I$(MPinc)CC=/home/用户目录/openmpi的安装目录/bin/mpicc可用#whichmpicc指令查看也可直接填mpiccCCNOOPT=$(HPL_DEFS)5CCFLAGS=$(HPL_DEFS)-fomit-frame-pointer-O3-funroll-loopsLINKER=同CCLINKFLAGS=同CCFLAGS(5)编译在HPL安装目录下运行$makearch=Linux注:编译成功会在bin/linux目录下有HPL.dat和xhpl文件如果失败,重新编译前加入#makearch=Linuxclean_arch_all如果使用icc,使用命令#whichmpiicc查看后修改Make.Linux2.HPL的运行(1)进入~/安装hpl的目录/bin/Linux目录$cd/home/用户目录/hpl安装目录/bin/Linux(2)准备节点文件$vinodes内容类似:cu01cu01cu01cu01cu02……(3)修改HPL.dat,设置运算规模和进程数等$viHPL.dat(4)运行$mpirun-np最大进程数–machinefilenodesxhpl成功运行后出现类似如下图:6三、PerformanceTuning目的与要求:使学生了解PerformanceTuning各个环节,掌握PerformanceTuning技术。重点:修改HPL.dat设置运行参数1.选择优化的BLAS库HPL软件包需要在配备了MPI环境下的系统中才能运行,还需要底层有线性代数子程序包BLAS的支持(或者有另一种向量信号图像处理库VSIPL也可)。虽然同样是对BLAS运算功能的实现,但具体不同的实现方法所生成的库,对HPL测试结果也有着很大的影响。采用GOTO开发的BLAS库要效果要好得多,尤其是在问题规模增大,计算量增多以后,效果就更明显。另外,它还有一个用pthread库编译的版本,可以用来在SMP机群上,使节点内部的通信方式不用MPI而采用Pthread,效率会更高一些。对于GOTO在提高节点间的通信性能的基础上,提高每个节点自身的效率也是优化集群性能的一种手段。处理器有自己的峰值速度,由它的主频和每周期的浮点运算次数所决定,对处理器效率的优化就是要使实际运算速度能够尽可能的接近峰值速度。7针对处理器的硬件特点而进行相应的优化会取得很显著的效果。GOTOBLAS库的设计思想,主要是基于如下几个基础方面的观察和考虑:由浮点运算单元进行的浮点运算速度与从第二级cache经过的浮点数据流的速度相比,相对而言这个比例是很小的。因此,启用第二级cache处理这些数据流是一笔不必要的开销很大一部分数据流的开销来自于阻塞CPU的TLB(TranslationLook-asideBuffers转换表缓冲区)不命中率,这种不命中很多是可以避免的,不能避免的也可以分摊到大量的计算当中去。可见GOTOBLAS之所以大大优化了性能,是由于它有效的针对Pentium4处理器的SSE2技术,提高了二级缓存的利用率,大大降低了TLB的不命中率,减少了不必要的开销。作为HPL需要频繁调用的底层库,BLAS自身的高效率对Linpack测试的性能指标产生了显著的影响。对一台计算机来讲,内存的性能对整个机器的影响是仅次于CPU的。所以要提高节点的运算效率,只一味的专注于CPU速度是不够的。对于一个SMP节点,两个处理器是共享一块物理内存的,因此处理好节点内部的并行才能够提高节点自
本文标题:实验4linpack
链接地址:https://www.777doc.com/doc-2500219 .html