《Linpack的安装测试与优化》由会员分享,可在线阅读,更多相关《Linpack的安装测试与优化(44页珍藏版)》请在金锄头文库上搜索。
1、天潮集群测试天潮集群测试一、天潮集群天潮集群Linpack测试测试二、天潮Iperf测试Linpack的安装、调试与优化的安装、调试与优化DSC认证培训体系课程时间:60分钟更新日期:2008年11月课程简介课程简介本课程为曙光认证服务器工程师曙光认证服务器工程师DCSA (Dawning Certified Server Associate) 培训课程之一课程内容:Linpack安装、调试与优化培训对象:参加曙光DCSA认证的技术人员有志于从事并行机性能评测的技术人员从事并行机性能评测的初级技术人员希望了解并行机性能评测的爱好者能力要求:初步了解并行机性能评测的相关知识培养目标:基本掌握Li
2、npack测试的方法和步骤,解决测试过程中遇到的简单的问题,能做适当的优化。第一章 Linpack的安装与调试-1.1 编译器的安装-1.2 并行环境的安装-1.3 数学库的安装-1.4 HPL的安装第二章 Linpack的优化与运行第三章 Linpack测试脚本的使用说明第四章 天潮集群Linpack测试验收标准目目 录录第一章第一章 LinpackLinpack的安装与调试的安装与调试Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能Linpack测试包括三类,
3、Linpack100、Linpack1000和HPL HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小(矩阵大小)、使用CPU数目、使用各种优化方法等等来执行该测试程序,以获取最佳的性能常用的编译器有:GNU PGI Intel编译器如果CPU是Intel的产品,最好使用Intel的编译器,它针对自己的产品做了一些优化,可能效果要好一些。这里使用全安装方式下RedHat操作系统自带的GNU编译器。1.1 1.1 编译器的安装编译器的安装常用的MPI并行环境有:MPICH LAM-MPI openmpi Intel的MPI等。如果CPU是Intel
4、的产品,提议使用Intel的MPI。这里使用MPICH 。 安装步骤: 本例中各软件安装在/dawn/test目录下1.2 1.2 并行环境并行环境MPIMPI的安装的安装下载mpich.tar.gz拷贝到/dawn/test目录#cd /dawn/test#tar zxvf mpich.tar.gz#cd mpich-1.2.7p1#./configure -prefix=/dawn/test/mpich-gnu -cc=gcc -c+=g+ -fc=g77#make#make install#vi /.bashrc文件加入export PATH=/dawn/test/mpich-gnu/b
5、in: $PATH#source /.bashrc命令使PATH路径起作用。#which mpirun,结果应为/dawn/test/mpich-gnu/bin/mpirun,说明PATH已被正确设置。# vi /dawn/test/mpich-gnu/share/machines.LINUX 加入主机名称,运行第一种HPL用采用BLAS库的性能对最终测得的Linpack性能有密切的关系,常用的BLAS库有GOTO、Atlas、ACML、ESSL、MKL等,测试经验是GOTO库性能最优。如果CPU是Intel的产品,建议使用MKL。这里使用GOTO库。安装步骤:下载最新的源代码包GotoBLA
6、S-1.13.tar.gz到/dawn/test目录下,此版本的已不需要补丁文件 1.3 1.3 数学库的安装数学库的安装#tar zxvf GotoBLAS-1.13.tar.gz,解压到GotoBLAS目录里面#vi Makefile.rule,修改的模板如下:1 #2 # Beginning of user configuration3 #45 # This librarys version6 REVISION = -r1.1378 # Which do you prefer to use for C compiler? Default is gcc.9 # I recommend yo
7、u to use GCC because inline assembler is required.10 C_COMPILER = GNU11 # C_COMPILER = INTEL1213 # Which do you prefer to use for Fortran compiler? Default is GNU g77.14 F_COMPILER = G7715 # F_COMPILER = G9516 # F_COMPILER = GFORTRAN17 # F_COMPILER = INTEL18 # F_COMPILER = PGI19 # F_COMPILER = PATHS
8、CALE20 # F_COMPILER = IBM21 # F_COMPILER = COMPAQ22 # F_COMPILER = SUN23 # F_COMPILER = F2C2425 # If you need 64bit binary; some architecture can accept both 32bit and26 # 64bit binary(EM64T, Opteron, SPARC and Power/PowerPC).27 BINARY64 = 12829 # If you want to build threaded version.30 # You can s
9、pecify number of threads by environment value31 # OMP_NUM_THREADS, otherwise, its automatically detected.32 SMP = 13334 # You may specify Maximum number of threads. It should be minimum.35 # For OpenMP users; you have to specify MAX_THREADS even if you dont36 # use threaded BLAS(MAX_THREADS = OMP_NU
10、M_THREADS * GOTO_NUM_THREADS)37 MAX_THREADS = 855 # If you want to use memory affinity (NUMA)56 # You cant use it with ALLOC_STATIC57 # NUMA_AFFINITY = 1#make(编译静态库libgoto_opteronp-r1.13.a)#cd exports#make so (编译动态库libgoto_opteronp-r1.13.so)下载hpl.tar拷贝到/dawn/test目录# # cdcd /dawn/test /dawn/test# tar
11、 # tar zxvfzxvf hpl.tgzhpl.tgz (生成hpl目录)# cp # cp hplhpl/ setup/ setup/Make.Linux_ATHLON_FBLASMake.Linux_ATHLON_FBLAS ././Make.testMake.test. . (因为使用fortran编译器所以选择FBLAS,Make.arch 为相近的系统即可,改名为了方便)1.4 HPL1.4 HPL的安装的安装vi Make.test修改相应的变量,模板如下:60 # -61 # - Platform identifier -62 # -63 #64 ARCH = test把A
12、RCH的值改为test,其原来的值是Linux_ATHLON_FBLAS66 # -67 # - HPL Directory Structure / HPL library -68 # -69 #70 TOPdir = /dawn/test/hpl把第70行的TOPdir变量的值改为你的当前目录的绝对路径,可以用pwd来确定。接下来找到77 # -78 # - Message Passing library (MPI) - 79 # -80 # MPinc tells the C compiler where to find the Message Passing library81 # he
13、ader files, MPlib is defined to be the name of the library to be82 # used. The variable MPdir is only used for defining MPinc and MPlib.83 #84 MPdir = /dawn/test/mpich-gnu85 MPinc = -I$(MPdir)/include86 MPlib = $(MPdir)/lib/libmpich.a把84行的MPdir的路径改为刚才安装的mpich所在的目录绝对路径。其中第86行的libmpich.a是mpich-1.2.7p1
14、的mpi消息传递库找到88 # - 89 # - Linear Algebra library (BLAS or VSIPL) -90 # -91 # LAinc tells the C compiler where to find the Linear Algebra library92 # header files, LAlib is defined to be the name of the library to be93 # used. The variable LAdir is only used for defining LAinc and LAlib.94 #95 LAdir =
15、 /dawn/test/GotoBLAS96 LAinc =97 LAlib = /dawn/test/GotoBLAS/libgoto_opteronp-r1.13.a把第97行的LAlib的值改为goto库所在的绝对路径。找到165 # -166 # - Compilers / linkers - Optimization flags -167 # -168 # 169 CC = /dawn/test/mpich-gnu/bin/mpicc170 CCNOOPT = $(HPL_DEFS)171 CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -03-
16、funroll-loops -W -Wall172 #173 # On some platforms, it is necessary to use the Fortran linker to find174 # the Fortran internals used in the BLAS library.175 #176 LINKER = /dawn/test/mpich-gnu/bin/mpif77#make arch=test#make arch=test在/dawn/test/hpl/bin目录下生成一个test目录,这个目录下面应该有一个HPL.dat文件和xhpl文件。如果没有这两
17、个文件则说明make没有运行成功,常常是由于Make.test文件有错误造成,要修改Make.test文件,使用一个新的后缀名(如test1),将ARCH变量也改为与新后缀名相同ARCH=test1,再次运行make命令时,arch=test1也要随之改变。第一章 Linpack的安装与调试第二章 Linpack的优化与运行 -2.1 HPL.dat中参数的优化-2.2 其他的性能优化-2.3 运行的方式-2.4 查看结果第三章 Linpack测试脚本的使用说明第四章 天潮集群Linpack测试验收标准目目 录录Linpack的性能调优涉及的面很多,是一项很复杂、永无止境的工作。本文是基于曙光
18、集群Linpack测试的一些经验总结,主要的优化工作集中在HPL.dat文件中参数的优化选择、库的选择以及硬件的选择等方面。HPL的运行方式和MPI密切相关,不同的MPI在运行方面有一定差别。对于MPICH来说主要有两种运行方法。第二章第二章 LinpackLinpack的优化与运行的优化与运行 修改test目录下的hpl.dat文件:# vi /root/test/hpl/bin/test1/HPL.dat一般每次测试都要修改第3-12行,修改原则如下: 第3行:如果希望结果输出到文件,那么在这一行指定文件名称,这个文件会放在/test下。第4行:如果希望结果输出到文件,此处设8.第5行:计
19、算的组数,第6行:每组的规模。规模的最大取值根据公式N*N*8=内存容量*80%计算得出。例:对于内存是4G的平台,N*N*8=4000000*80%,得出N=20000, 测试者希望本测试连续运行三次,则第五行设3,本行取小于等于20000的任意三个数字。2.1 2.1 HPL.datHPL.dat中参数的优化中参数的优化第7、8行:这两个数字与库类型有关,如第7行设3,第八行就要将下表中的某个数字连写三遍,这个数字有一些经验值。见下表: 平台 L2 Cache 数 学库 NB Intel P4 Xeon L2:512KB ATLAS 400 MKL GOTO384192AMD Optero
20、n L2:1MB GOTO 232 Intel nocona GOTO 96 第10、11、12行:这三行是根据CPU数来设定的。P与Q相乘等于总CPU数,第10行为CPU总数所分的格数,也算就是集中方式得到CPU总数, 例如2cpu, 分2格,P=1时,Q=2; P=2时,Q=1。 一般来说,当Q取2,P取1时所测的结果不太好,所以往往只设P=1,Q=2.。这样则第10行设1,第11行设1,第12行设2。上面未提到的各行按下例设置:HPLinpack benchmark input fileInnovative Computing Laboratory, University of Tenn
21、essee HPL.out output file name (if any)8 device out (6=stdout,7=stderr,file)3 # of problems sizes (N) 20000 21000 19000 Ns3 # of NBs192 232 256 NBs1 PMAP process mapping (0=Row-,1=Column-major)1 # of process grids (P x Q)1 Ps1 Qs16.0 threshold1 # of panel fact1 PFACTs (0=left, 1=Crout, 2=Right)1 # o
22、f recursive stopping criterium4 NBMINs (= 1)1 # of panels in recursion2 NDIVs 1 # of recursive panel fact.1 RFACTs (0=left, 1=Crout, 2=Right)1 # of broadcast3 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # of lookahead depth2 DEPTHs (=0)2 SWAP (0=bin-exch,1=long,2=mix)64 swapping threshold0 L1 in (
23、0=transposed,1=no-transposed) form0 U in (0=transposed,1=no-transposed) form1 Equilibration (0=no,1=yes)8 memory alignment in double ( 0) MPI对于常用的MPICH来说,安装编译MPICH时,使其节点内采用共享内存进行通信可以提升一部分性能,在configure时,设置“with-comm=shared”。对于GM来说,在找到路由以后,将每个节点的gm_mapper进程kill掉,大概有一个百分点的性能提高。当然也可以采用指定路由表的方式启动GM。2.2 2
24、.2 其他性能优化其他性能优化处理器-进程的映射方式调节进程与处理器间的映射关系对性能产生不小的影响,优化此映射关系的关键在于改变各节点的计算负载和通信操作以减少通信网络的竞争、实现更快速的通讯路径和实现节点的计算负载均衡。如:避免计算负载过于集中于某几个节点、避免两节点间同时多对进程并发通信、尽可能使用节点内通信等等。操作系统操作系统层上的性能优化方法很多,如裁减内核、改变页面大小、调整改内核参数、调整网络参数等等,每一种优化都很复杂,需要涉及操作系统相关知识,我对这个方面了解的不是很细,就不在这儿详细叙述了。在这里我只是说最简单的一种方法,将一些没有必要的系统守护进程去掉,并且将操作系统启
25、动到第3级,不要进入图形方式。其他硬件设备对性能的影响我这里说的其它硬件设备是指除了CPU以外的设备,包括网络、内存、主板等等。虽然HPL主要测试CPU的性能,但是计算机是一个整体,其它的硬件设备对其影响也是很大。先说网络,网络是机群系统的核心。当然网络性能越好,整体性能越好。但是对于同一种网络,如千兆以太网,网线的连接等也会对性能造成影响。首先要了解所使用的交换机的性能特点,同样是千兆以太网,其性能差别会很大,不同端口之间通信的速度不尽相同。还有就是主板和内存,其性能特点也会对整体性能有很大的影响。在/dawn/test/hpl/bin/test下执行第一种方式:# # mpirunmpir
26、un npnp N N xhplxhpl ( N ( N 为进程数,取为进程数,取$(MPICH$(MPICH安安装目录装目录)/share/)/share/machines.LINUXmachines.LINUX配置文件配置文件) ) 第二种方式:mpirunmpirun p4pg p4pg xhplxhpl 需要自己编写配需要自己编写配置文件置文件p4filep4file指定每个进程在哪个节点运行指定每个进程在哪个节点运行 下面是一个的样例。#vi p4filegnode1 0 /dawn/test/hpl/test/bin/xhplgnode1 1 /dawn/test/hpl/test
27、/bin/xhplgnode2 1 /dawn/test/hpl/test/bin/xhplgnode2 1 /dawn/test/hpl/test/bin/xhpl2.3 2.3 运行的方式运行的方式HPL允许一次顺序做多个不同配置测试,所以结输出文件(缺省文件名为HPL.out)可能同时有多项测试结果。下面是曙光4000A Linpack测试的最终结果=T/V N NB P Q Time Gflops-WC23C2C4 728480 232 32 80 31972.21 8.061e+03-|Ax-b|_oo / ( eps * |A|_1 * N ) = 0.0028792 . PASS
28、ED|Ax-b|_oo / ( eps * |A|_1 * |x|_1 ) = 0.0015927 . PASSED|Ax-b|_oo / ( eps * |A|_oo * |x|_oo ) = 0.0002556 . PASSED=2.4 2.4 查看结果查看结果使用基准测试一般需要和收集的信息包括:R: 它是系统的最大的理论峰值性能,按GFLOPS表示。理论浮点峰值CPU主频CPU每个时钟周期执行浮点运算的次数系统中CPU核数 表1:CPU每个时钟周期执行浮点运算的次数CPUCPUFlops/CycFlops/CycleleCPUCPUFlops/CycFlops/CycleleCPUCP
29、UFlops/CycFlops/CycleleItanium24Opteron2Xeon(双核)4Barcelona4Xeon(四核)4例如:A610r-F有两片AMD Opteron Processor 2218 HE其理论浮点峰值=2.6G*2*4=20.8GFlops/Cycle其实测峰值=18.37GFlops/Cycle所以其Linpack的利用率=18.37/20.8=89.3%第一章 Linpack的安装与调试第二章 Linpack的优化与运行第三章 Linpack测试脚本的使用说明-3.1 使用脚本的前提-3.2 使用脚本测试Linpack的步骤第四章 天潮集群Linpack测
30、试验收标准目目 录录写这个脚本的主要目的是减轻天津生产人员进行集群Linpack测试的负担。此脚本会修改用户的环境变量,如果不想改变变量,请提前保存环境变量文件。此脚本既能用于单机Linpack测试又能用于集群Linpack测试。第三章第三章 LinpackLinpack测试脚本的使用说明测试脚本的使用说明使用脚本程序测试Linpack要求集群节点序列号是连续的,所有节点的操作系统是统一的版本(RedHat或是CENT OS),并对集群的所有节点的/etc/hosts文件进行如下修改:127.0.0.1 localhost百兆网卡的IP地址 bnodexx千兆网卡的IP地址 nodexx -
31、-集群的所有节点的/etc/sysconfig/network文件中HOSTNAME=nodexx;并且rsh 配通。3.1 3.1 使用脚本的前提使用脚本的前提集群配置RSH服务步骤:启动rexec,rsh,rlogin服务 chkconfigchkconfig rshrsh on on chkconfigchkconfig rexecrexec on onchkconfigchkconfig rlogin on rlogin on修改/etc/hosts文件,加入主机和IP的解析行.如:10.0.38.1 node1 在root目录下建立.rhosts文件,写入主机名称.修改/etc/pa
32、m.d目录下rlogin,rsh,login文件内容,把这三个文件中有scurity一词的行注释掉./etc/init.d/xinetd restart.验证RSH配置, 执行命令#rsh 主机名, 如果没有提示输入密码即可登陆说明配置成功. 以上步骤是在单机环境的安装方法,在多机环境下运行按下列配置,以主机名未A,B的两个节点为例: 先将A机器按以上方法配置完成再将B机器的RSH服务配置完成,注意要在AB两机上的/etc/hosts应为: x.x.x.x A x.x.x.x.B root/.rhosts内容应为: A B 验证RSH:在A机执行RSH B,未提示输入口令即可登陆到B机,在B机
33、执行RSH A,未提示输入口令即可登陆到A机。 或者执行命令:# for i in seq A B;do rsh node$i hostname;done如果返回集群的节点名序列则开通rsh成功。在集群的第一个节点上执行如下命令:#mkdir /dawn#mkdir /dawn/test#cp GotoBLAS-1.13.tar.gz、 hpl.tgz 、 mpich.tar.gz及脚本linpack到/dawn/test目录下 (四核使用GotoBLAS-1.24.tar.gz)#cd /dawn/test#sh x ./linpack nodeA.B txt 2&13.2 3.2 使用脚本
34、测试使用脚本测试LinpackLinpack的步骤的步骤第一章 Linpack的安装与调试第二章 Linpack的优化与运行第三章 Linpack测试脚本的使用说明第四章 天潮Linpack测试验收标准目目 录录表一:单节点Linpack测试的具体合格标准参照表内存/core单个节点的核数1 cores2 cores4 cores8 cores16 cores32 cores0.125G55%55%55%0.25G65%65%65%65%0.5G70%70%70%70%70%1 G75%75%75%75%75%75%第四章第四章 天潮天潮LinpackLinpack测试验收标准测试验收标准表二
35、:集群Linpack测试的具体标准参照表每个core分配的内存集群的总核数32cores36-64 cores68-128 cores132-256 cores256-512cores0.125G50%5%45%5%40%5%35%5%30%5%0.25G55%5%50%5%45%5%40%5%35%5%0.5G60%5%55%5%50%5%45%5%40%5%1G65%5%60%5%55%5%50%5%45%5%备注:此表是适用于双核集群的测试标准,根据实际的测试经验,四备注:此表是适用于双核集群的测试标准,根据实际的测试经验,四核集群的标准值要低十个百分点左右。另外,为了减少工作量,建议核集群的标准值要低十个百分点左右。另外,为了减少工作量,建议每个集群规模不要多于每个集群规模不要多于16个节点。个节点。