《中科院昆明动物研究所培训》由会员分享,可在线阅读,更多相关《中科院昆明动物研究所培训(97页珍藏版)》请在金锄头文库上搜索。
1、中科院昆明动物研究所培训-2008.11 -2008.11 云南昆明云南昆明- 8008100466- 8008100466售前工程师:张希韬售前工程师:张希韬 TEL:13888565007TEL:13888565007LiuyiLiuyi 13888013108 13888013108 wangweiwangwei 13888002063 138880020631.曙光简介2.高性能计算机基础3.LINUX基础4.高性能集群并行环境基础5.机房现场介绍1.曙光简介(见PPT)2.高性能计算基础2.1 什么是高性能并行计算机由众多部件组成,具有运算速度快、存储容量大、可靠性高的特性。也称为:
2、巨型计算机、超级计算机目前任何高性能计算和超级计算都离不开使用并行技术,所以高性能计算机肯定是并行计算机。2.2高性能计算机的发展专用时代 包括向量机,MPP系统,SGI NUMA 系统,SUN大型SMP系统,也包括我国的神威,银河,曙光1000,KJ。之所以称为“专用”,并不是说它们只能运行某种应用,是指它们的组成部件是专门设计的,它们的CPU板,内存板,I/O板,操作系统,甚至I/O系统,都是不能在其它系统中使用的。由于技术上桌面系统与高端系统的巨大差异,和用户群窄小。 普及时代 高性能计算机价格下降,应用门槛降低,应用开始普及。两个技术趋势起到重要作用。商品化趋势使得大量生产的商品部件接
3、近了高性能计算机专有部件标准化趋势使得这些部件之间能够集成一个系统中,其中X86处理器、以太网、内存部件、Linux都起到决定性作用。机群系统是高性能计算机的一种,其技术基础和工业基础都是商品化和标准化。2.3 流行的高性能计算机架构并行向量机SMPDSM(NUMA)MPP,节点可以是单处理器的节点,也可以是SMP,DSMCluster混合架构2.4 高性能计算市场竞争格局HPIBMDELL联想SGI曙光三大厂商机架式服务器三大厂商刀片式服务器2.5 曙光高性能计算解决方案PHPC机架式集群刀片式集群二代小型机机架式集群 应用领域计算中心、CAE、计算化学、生物信息学等8-128节点应用曙光方
4、案计算节点:A(I)610r-F、A(I)620r-F、A820r-F等管理节点:A(I)620r-F、A(I)650r-F等存储节点:A(I)620r-F、A(I)650r-F等存储阵列:DS6310、DS8310、DS8340计算网:H3C S5100/5600或Infiniband管理网:H3C S5100或D-link 百兆、千兆交换机管理软件:DCOS、DCAS作业管理软件:OpenPBS、Torque、SGE或PBSPro编译器:Intel、PGI中小规模集群(864)大规模集群(64128)刀片式集群 应用领域计算中心、CAE、计算化学、生物信息学等8-512节点应用曙光方案计算
5、节点:TC2600 Intel双路、AMD双路、AMD四路管理节点:A(I)620r-F、A(I)650r-F等存储节点:A(I)620r-F、A(I)650r-F等存储阵列:DS6310、DS8310、DS8340计算网:H3C S5100/5600或Infiniband管理网:H3C S5100或D-link 百兆、千兆交换机管理软件:DCOS、DCAS作业管理软件:OpenPBS、Torque、SGE或PBSPro编译器:Intel、PGI刀片服务器方案优势 大规模计算机群功耗、占地面积有明显降低,节能环保 丰富的管理软件,提升系统易用性刀片集群(64256)曙光5000系统曙光5000
6、的第一套系统于08年12月落户“上海超级计算中心”,系统峰值运算速度达到每秒230万亿次浮点运行(230TFLOPS),是目前国内速度最快的商用高性能计算机系统,这标志着中国成为继美国之后第二个能制造和应用超百万亿次商用高性能计算机的国家,也表明我国生产、应用、维护高性能计算机的能力达到世界先进水平曙光5000是节点以刀片为主(刀片的CPU总数超过60个),集成GridView软件和曙光机柜的高性能计算机系统曙光5000系统: 每机柜可达50片四路四核刀片(占用空间35U) 每机柜可达200CPU,800核的超高计算密度曙光公司部分成功案例中科院物理所中科院力学所中科院物数所中国地质大学材化学
7、院中国地质大学数物学院中科院长春应用化学所云南大学烟台师范大学物理系华东理工大学郑州大学材料物理实验室武汉大学纳米设计实验室武汉大学空间物理实验室华中师范大学化学系中山大学物理系山东师范大学:湘潭大学:南京航空航天大学:3.LINUX基础(见PPT)4.高性能集群并行环境基础并行编程标准1.1.多线程库标准多线程库标准 Win32 API. Win32 API. POSIX threads. POSIX threads.2.2.编译制导标准编译制导标准 OpenMPOpenMP 可移植共享存储并行编程标准可移植共享存储并行编程标准. .3.3.消息传递库标准消息传递库标准 MPI MPI PV
8、M PVMMassage Passing Interface:是消息传递函数库的标是消息传递函数库的标准规范准规范. .由由MPIMPI论坛开发论坛开发. .支持支持FortranFortran和和C.C.一种新的库描述一种新的库描述, , 不是一种语言不是一种语言. .发展的两个阶段发展的两个阶段MPI 1.1: 1995MPI 1.1: 1995MPICHMPICH: :是是MPIMPI最流行的非专利实现最流行的非专利实现, ,由由ArgonneArgonne国家实验室和密国家实验室和密西西比州立大学联合开发西西比州立大学联合开发, ,具有更好的可移植性具有更好的可移植性. .MPI 1.
9、2-2.0:MPI 1.2-2.0:动态进程动态进程, , 并行并行 I/O, I/O, 支持支持F90F90和和C+(1997).C+(1997).消息传递并行程序设计消息传递并行程序设计指用户必须通过显式地发送和接收消息来实现处理机间的数据交指用户必须通过显式地发送和接收消息来实现处理机间的数据交换。换。在这种并行编程中,每个并行进程均有自己独立的地址空间,相在这种并行编程中,每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现。互之间访问不能直接进行,必须通过显式的消息传递来实现。这种编程方式是大规模并行处理机(这种编程方式是大规模并行处理机(MPP
10、MPP)和机群()和机群(ClusterCluster)采)采用的主要编程方式。用的主要编程方式。并行计算粒度大,特别适合于大规模可扩展并行算法并行计算粒度大,特别适合于大规模可扩展并行算法由于消息传递程序设计要求用户很好地分解问题由于消息传递程序设计要求用户很好地分解问题, ,组织不同进程间组织不同进程间的数据交换的数据交换, ,并行计算粒度大并行计算粒度大, ,特别适合于大规模可扩展并行算法特别适合于大规模可扩展并行算法. .消息传递是当前并行计算领域的一个非常重要的并行程序消息传递是当前并行计算领域的一个非常重要的并行程序设计方式设计方式为什么要用为什么要用MPI?MPI?高可移植性高可
11、移植性MPIMPI已在已在IBM PCIBM PC机上、机上、MS WindowsMS Windows上、所有主上、所有主要的要的UnixUnix工作站上和所有主流的并行机上得到工作站上和所有主流的并行机上得到实现。使用实现。使用MPIMPI作消息传递的作消息传递的C C或或FortranFortran并行程并行程序可不加改变地运行在序可不加改变地运行在IBM PCIBM PC、MS WindowsMS Windows、UnixUnix工作站、以及各种并行机上。工作站、以及各种并行机上。PBS作业调度系统作业调度系统PBS最初由NASA的Ames研究中心开发,为了提供一个能满足异构计算网络需要
12、的软件包。它力求提供对批处理的初始化和调度执行的控制,允许作业在不同主机间的路由。OpenPBS作业调度系统作业调度系统 组成组成资源管理器:管理集群的硬件资源及认证信息等队列管理器:管理当前所有已提交但还未完成的作业调度器:为作业分配资源 作用作用单一系统映象 机群松散的结构的整合系统资源整合 异构系统的整合多用户的管理 用户提交的任务的统一安排,避免冲突用户权限的管理 非授权用户的控制作业管理系统的结构作业管理系统的结构作业特性比较作业特性比较系统特性 SGE LSF OPEN PBS PBS PRO支持异构平台Unix & NT,多硬件Unix & NT,多硬件仅Unix ,多硬件仅Un
13、ix ,多硬件用户操作接口API/GUI/CLI/WEB,管理复杂API/GUI/CLI/WEB,管理方便API/GUI/CLI,功能少API/GUI/CLI/WEB ,管理方便支持DRMAA支持不支持支持支持支持POSIX批处理API标准支持不支持支持支持源代码开放开放不开放开放付费后开放用户文档支持非常详细非常详细较简单详细支持批处理作业支持支持支持支持支持交互式作业支持支持不支持支持支持海量作业组支持支持不支持支持支持并行作业支持支持支持支持支持PVM/MPI支持,功能强支持,功能强大支持,功能弱支持,功能强队列管理、调度特性比较队列管理、调度特性比较系统特性 SGE LSF OPEN
14、PBS PBS PRO支持多队列调度支持支持支持支持支持作业控制 支持,功能完善支持,功能完善支持,功能简单支持,功能完善支持作业前置/后置脚本支持支持支持支持标准调度算法支持,2种算法支持,6种算法支持,2种算法支持,多种算法自定义调度算法支持不开源,故不支持支持支持使用外部调度器支持不开源,故不支持支持支持高级资源预留支持支持不支持支持Backfill调度从6.0起支持,但使用较复杂算法支持,使用方便,且十分高效不支持不支持支持抢占调度支持支持不支持支持支持共享调度支持支持,且有专利的高效的竞标式算法支持支持PBS 的组成的组成服务器:pbs_server调度器:pbs_sched执行器:
15、pbs_mom命令行:用户脚本,管理命令等PBS 的基本原理的基本原理PBS的使用步骤的使用步骤1.准备:编写描述改作业的脚本,包括作业名,需要的资源等。2.提交:使用qsub命令将该作业提交给PBS服务器3.排队:服务器将该任务排入适当的队列4.调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。5.执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。6.查询和调整:当作业在运行时,用户可以使用qstat进行状态查询。用户发现作业提交错误时,可以使用qdel删除正在运行的作业。7.查看结果
16、:使用文本编辑软件vi或者系统命令cat, less等查看输出及错误信息显示。PBS 的基本命令的基本命令在PBS系统中,用户使用qsub 命令提交用户程序。用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行:zhaocsnode1 $ qsub qsub运行参数运行参数运运 行行 参参 数数说说 明明-a 向PBS系统指定作业运行的开始时间。作业运行时间格式为: CCYYMMDDhhmm.SS-A 使用不同的用户来提交作业,缺省使用当前用户名-o -e 该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准错误输出放在用户qsu
17、b命令提交作业的目录下。标准错误输出:.o标准错误输出:.e路径使用如下格式标准: :-N 指定提交的作业名-q 指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名或者是目标节点上的队列。如果目标队列是一个路由队列,那么服务器可能把作业路由到新的队列中。如果该参数没有指定,命令qsub会把作业脚本提交到缺省的队列中。-l 该参数指定作业脚本申请的PBS系统资源列表。申请资源列表使用如下格式: =,资源名=, .例如作业希望申请在双路节点上申请5个CPU资源的情况,则可以在脚本中如下:#PBS l nodes=2:ppn=2+:ppn=1PBS 作业脚本作业脚本注释,以“#”开头PB
18、S指令,以“#PBS”开头SHELL命令#PBS #PBS N N vasp.Hgvasp.Hg#PBS #PBS l nodes=8:ppn=2l nodes=8:ppn=2echo This jobs is $PBS_JOBID$PBS_QUEUE echo This jobs is $PBS_JOBID$PBS_QUEUE cdcd $PBS_O_WORKDIR $PBS_O_WORKDIRmpirunmpirun - -npnp 16 - 16 -machinefilemachinefile $PBS_NODEFILE ./ $PBS_NODEFILE ./vaspvaspPBS的环境
19、变量的环境变量变变 量量 名名说说 明明登陆SHELL继承来的变量包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ。$PBS_O_HOSTqsub提交的节点名称$PBS_O_QUEUEqsub提交的作业的最初队列名称$PBS_O_WORKDIRqsub提交的作业的绝对路径$PBS_JOBID作业被PBS系统指定的作业号$PBS_JOBNAME用户指定的作业名,可以在作业提交的时候用qsub N 指定,或者在PBS脚本中加入#PBS N 。$PBS_NODEFILEPBS系统指定的作业运行的节点名。该变量在并行机和机群中使用。当在PBS脚本中用#PBS
20、l nodes=2:ppn=2指定程序运行的节点数时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指定的作业运行的节点名。比如:#PBS l nodes=2:ppn=2mpirun np 4 machinefile $PBS_NODEFILE $PBS_QUEUEPBS脚本在执行时的队列名PBS 作业脚本作业脚本注释,以“#”开头PBS指令,以“#PBS”开头SHELL命令#PBS N vasp.Hg#PBS l nodes=8:ppn=2#PBS q node1echo This jobs is $PBS_JOBID$PBS_QUEUE cd $PBS_O_WORKDIRmpir
21、un -np 16 -machinefile $PBS_NODEFILE ./vaspPBS 作业脚本举例作业脚本举例# 这是一个串行作业脚本的例子这是一个串行作业脚本的例子#PBS N Loop.out#PBS l nodes=1:ppn=1cd /public/home/zhaocs/test/./a.out $HOME/result/a.result# 这是一个并行作业脚本的例子这是一个并行作业脚本的例子#PBS N vasp.Hg#PBS l nodes=8:ppn=2#PBS q node1echo This jobs is $PBS_JOBID$PBS_QUEUE cd $PBS_
22、O_WORKDIRmpirun -np 16 -machinefile $PBS_NODEFILE ./vasp一个复杂的一个复杂的PBS作业脚本作业脚本#!/bin/bash#PBS -N jobname#PBS -l nodes=4:ppn=2cat echo $PBS_NODEFILE $HOME/$PBS_JOBID.nodesfor node in cat $HOME/$PBS_JOBID.nodes do rsh $node mkdir /tmp/$PBS_JOBID rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/ donecd
23、 /tmp/$PBS_JOBIDmpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vaspcp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/for node in cat $HOME/$PBS_JOBID.nodes do rsh $node rm -rf /tmp/$PBS_JOBID donerm $HOME/$PBS_JOBID.nodes查询和取消作业查询和取消作业dawningnode1 $ qstat node1Job id Name User Time Use S Queue- - - - - -93
24、.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q defaultzhaocsnode1 $ qdel 93.node1查询作业运行的位置查询作业运行的位置zhaocsnode1 $ pbsnode -azhaocsnode1 $ qstat fzhaocsnode1 $ qstat -r错误处理错误处理作业提交后处于排队状态 没有可用的节点,也就是节点资源被其他作业使用; 节点处于忙状态; 调度器失效; 指定的节点失效,或者节点上的mom失效作业提交后
25、异常结束 脚本文件使用的是windows格式 脚本中使用一些命令路径问题 脚本退出但是作业没有退出 用户使用的文件的权限问题处理方法的原则是查看作业的标准输入和标准错误输出的结果错误处理(续)错误处理(续)如果环境配置错误,可能导致作业反复在等待状态和运行状态转换,可以通过“qdel 作业号”将该作业删除再重新配置环境。可能出现作业显示为运行状态,但是已经没有活动的进程,可通过“qsig SIGNULL 作业号”通知server作业已经退出。作业的输出无法传出,可能是以下原因造成:目标主机不被信任,并且用户没有.rhost文件指定了一个错误的路径名指定的目标目录不可写目标主机的用户.cshrc
26、执行时产生了输出。执行主机的PWS的spool目录没有使用正确的权限,这个目录必须使用1777权限(drwxrwxrwx)。PBS的常用命令提交作业$ qsub test.pbs -l nodes=16 -l 用于描述作业需要的资源,例如: nodes=4 (4 节点 每节点 1个 CPU ) nodes=2:ppn=2 (2节点 每节点 2个CPU) nodes=1:ppn=2+2:ppn=1 (1个双CPU节点 和 2个单CPU的节点) 当前任务状态得到PBS的当前状态:qstat当前节点状态pbsnodes - a|l -s server -a 列出所有结点及其属性,属性包括“state
27、”和“properties” -c 清除结点列表中的“offline”或“down”状态设置,使结点可以被分配给作业。 -l 以行的方式列出被标记的结点的状态 -o 将指定结点的状态标记为“offline”。这将帮助管理员暂时停止某些结点的服务。 -r 清除指定结点的“offline”状态 -s 指定服务器当前节点状态节点状态节点状态节点名节点名CPU数数其他常用命令qselect q 队列名qdel - Deletes a task in the queue. qdel job_identifier .qhold - Suspends a job in the queue. qhold jo
28、b_identifier .qrls - Reactivates a suspended job in the queue. qrls job_identifier .qrerun 重新运作作业qmove 目标队列 作业IDOpenPBS服务器管理PBS服务器管理命令 设置服务器级的访问控制s s acl_host_enable=true指明是否使用acl_hosts属性,缺省为falses s acl_hosts+=hostname.domain缺省值允许所有的主机s s acl_user_enable=trues s acl_users+=userhostname.domain设置队列级的
29、访问控制s q qname acl_host_enable=trues q qname acl_hosts+=hostname.domains q qname acl_user_enable=trues q qname acl_users+=userhostname.domains q qname acl_group_enable=trues q qname acl_groups=group_name,缺省为允许所有组设置服务器与队列的资源限制服务器级s s resources_default.resource_name=value队列级s q qname resources_default.
30、resource_name=value资源作业执行中需要的东西。 例如:某个特定的节点、某个软件包,或者是CPU时间,内存等。qsub l cput=00:10:00 script资源描述cput 作业总共需要的CPU时间.file 作业要创建的文件大小.nice 作业优先级(nice值).pcput 作业中单个进程需要的CPU时间.pmem 作业中单个进程需要的物理内存大小.pvmem 作业中单个进程需要的虚拟内存大小.vmem 作业总共需要的虚拟内存大小.walltime 作业运行的实际时间.arch 作业需要的系统体系结构.host 作业运行的节点名.nodes 作业运行需保留的节点数.
31、other 其他资源.software 作业需要的软件报名称.正在运行的作业数目限制服务器级s s max_running=value(最多正在运行作业的数目)s s max_user_run=value(最多单个用户作业数目)s s max_group_run=value(最多单个组任何用户运行的作业数目)队列级s q qname max_running=values q qname max_user_run=values q qname max_group_run=valuePBS的图形界面Xpbs主窗口Xpbs主窗口主要有以下几个部分组成:菜单,主机,队列,作业和提示信息。其中菜单包括手
32、工更新数据、自动更新数据、提交作业、跟踪作业、参数选择、关闭和帮助等。PBS图形界面(xpbs)Xpbsmon图形界面监控Xpbsmon是PBS的节点监控的图形界面,可以直观的显示PBS所运行的系统环境中所有节点机的工作状态。Xpbsmon的配置文件是$PBS_LIB/xpbsmon/xpbsmonrc和$HOME/.xpbsmonrc ($PBS_LIB默认/usr/lib,$HOME为/root)(参考)(参考) Linpack测试介绍测试介绍Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的
33、测试,评价高性能计算机的浮点性能。Linpack测试包括三类,Linpack100、Linpack1000和HPL 。HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小(矩阵大小)、使用CPU数目、使用各种优化方法等等来执行该测试程序,以获取最佳的性能。 Linpack测试步骤1、编译器的安装2、并行环境MPI的安装3、BLAS库的安装4、HPL的安装5、运行的方式6、查看结果1、编译器的安装常用的编译器有:GNU PGI Intel编译器如果CPU是Intel的产品,最好使用Intel的编译器,它针对自己的产品做了一些优化,可能效果要好一些。这里
34、使用全安装方式下RedHat系统自带的GNU编译器。2、并行环境MPI的安装常用的MPI并行环境有:MPICH LAM-MPI openmpi Intel的MPI等。如果CPU是Intel的产品,提议使用Intel的MPI。这里使用MPICH 。 安装步骤: 本例中各软件安装在/dawn/test目录下下载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#m
35、ake#make install#vi /.bashrc文件加入export PATH=/dawn/test/mpich-gnu/bin: $PATH#source /.bashrc命令使PATH路径起作用。#which mpirun,结果应为/dawn/test/mpich-gnu/bin/mpirun,说明PATH已被正确设置。# vi /dawn/test/mpich-gnu/share/machines.LINUX 加入主机名称,运行第一种HPL用3、BLAS库的安装采用BLAS库的性能对最终测得的Linpack性能有密切的关系,常用的BLAS库有GOTO、Atlas、ACML、ESS
36、L、MKL等,测试经验是GOTO库性能最优。如果CPU是Intel的产品,建议使用MKL。这里使用GOTO库。安装步骤:下载最新的源代码包GotoBLAS-1.13.tar.gz到/dawn/test目录下,此版本的已不需要补丁文件 #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
37、to use for C compiler? Default is gcc.9 # I recommend you 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_COMP
38、ILER = INTEL18 # F_COMPILER = PGI19 # F_COMPILER = PATHSCALE20 # 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 = 1282
39、9 # If you want to build threaded version.30 # You can specify 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 eve
40、n if you dont36 # use threaded BLAS(MAX_THREADS = OMP_NUM_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)4、H
41、PL的安装下载hpl.tar拷贝到/dawn/test目录# cd /dawn/test# tar zxvf hpl.tgz (生成hpl目录)# cp hpl/ setup/Make.Linux_ATHLON_FBLAS ./Make.test. (因为使用fortran编译器所以选择FBLAS,Make.arch 为相近的系统即可,改名为了方便)vi Make.test修改相应的变量,模板如下:60 # -61 # - Platform identifier -62 # -63 #64 ARCH = test把ARCH的值改为test,其原来的值是Linux_ATHLON_FBLAS66
42、# -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 # header files, MPlib is defined to be the
43、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的mpi消息传递库找到88 # - 89 # - Linear Algebra
44、 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 = /dawn/test/GotoBLAS96 LAinc =97 LAlib
45、= /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-funroll-loops -W -Wall172 #173 # On som
46、e 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在/dawn/test/hpl/bin目录下生成一个test目录,这个目录下面应该有一个HPL.dat文件和xhpl文件。如果没有这两个文件则说明make没有运行成功,常常是由于Make.test文件有错误造成,要修改Make.test文件,
47、使用一个新的后缀名(如test1),将ARCH变量也改为与新后缀名相同ARCH=test1,再次运行make命令时,arch=test1也要随之改变。修改test目录下的hpl.dat文件:# vi /root/test/hpl/bin/test1/HPL.dat一般每次测试都要修改第3-12行,修改原则如下: 第3行:如果希望结果输出到文件,那么在这一行指定文件名称,这个文件会放在/test下。第4行:如果希望结果输出到文件,此处设8.第5行:计算的组数,第6行:每组的规模。规模的最大取值根据公式N*N*8=内存容量*80%计算得出。例:对于内存是4G的平台,N*N*8=4000000*80
48、%,得出N=20000, 测试者希望本测试连续运行三次,则第五行设3,本行取小于等于20000的任意三个数字。 第7、8行:这两个数字与库类型有关,如第7行设3,第八行就要将下表中的某个数字连写三遍,这个数字有一些经验值。见下表: 平台 L2 Cache 数 学库 NB Intel P4 Xeon L2:512KB ATLAS 400 MKL GOTO384192AMD Opteron L2:1MB GOTO 232 Intel nocona GOTO 96 第10、11、12行:这三行是根据CPU数来设定的。P与Q相乘等于总CPU数,第10行为CPU总数所分的格数,也算就是集中方式得到CPU
49、总数, 例如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 Tennessee HPL.out output file name (if any)8 device out (6=stdout,7=stderr,file)3 # of problems sizes (N) 20000
50、 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 # of recursive stopping criterium4 NBMINs (= 1)1 # of panels in recursion2 NDIVs 1 # of recursive panel fact.1
51、 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 (0=transposed,1=no-transposed) form0 U in (0=transposed,1=no-transposed) form1 Equilibration (0=no,1=yes)8 m
52、emory alignment in double ( 0) 5、运行的方式在/dawn/test/hpl/bin/test下执行第一种方式:# mpirun np N xhpl ( N 为进程数,取为进程数,取$(MPICH安装目录安装目录)/share/machines.LINUX配置文件配置文件) 第二种方式:mpirun p4pg xhpl 需要自己编写配置文件需要自己编写配置文件p4file指指定每个进程在哪个节点运行定每个进程在哪个节点运行 下面是一个的样例。#vi p4filegnode1 0 /dawn/test/hpl/test/bin/xhplgnode1 1 /dawn/
53、test/hpl/test/bin/xhplgnode2 1 /dawn/test/hpl/test/bin/xhplgnode2 1 /dawn/test/hpl/test/bin/xhpl6、查看结果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 . PA
54、SSED|Ax-b|_oo / ( eps * |A|_1 * |x|_1 ) = 0.0015927 . PASSED|Ax-b|_oo / ( eps * |A|_oo * |x|_oo ) = 0.0002556 . PASSED=使用基准测试一般需要和收集的信息包括:R: 它是系统的最大的理论峰值性能,按GFLOPS表示。理论浮点峰值CPU主频CPU每个时钟周期执行浮点运算的次数系统中CPU核数 表1:CPU每个时钟周期执行浮点运算的次数CPUCPUFlops/CycFlops/CycleleCPUCPUFlops/CycFlops/CycleleCPUCPUFlops/CycFlop
55、s/CycleleItanium24Opteron2Xeon(双核)2Barcelona4Xeon(四核)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测试的具体合格标准参照表内存/core单个节点的核数1 cores2 cores4 cores8 cores16 cores32 cores0.125G55%55
56、%55%0.25G65%65%65%65%0.5G70%70%70%70%70%1 G75%75%75%75%75%75%表三:集群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%备注:此表是适用于双核集群的测试标准,根据实际的测试经验
57、,四备注:此表是适用于双核集群的测试标准,根据实际的测试经验,四核集群的标准值要低十个百分点左右。另外,为了减少工作量,建议核集群的标准值要低十个百分点左右。另外,为了减少工作量,建议每个集群规模不要多于每个集群规模不要多于16个节点。个节点。三、集群三、集群Linpack测试脚本的使用测试脚本的使用说明说明使用脚本程序测试Linpack要求集群节点序列号是连续的,所有节点的操作系统是统一的版本,并对集群的所有节点的/etc/hosts文件进行如下修改:127.0.0.1 localhost百兆网卡的IP地址 bnodexx千兆网卡的IP地址 nodexx - -集群的所有节点的/etc/sy
58、sconfig/network文件中HOSTNAME=nodexx;并且rsh 配通。集群配置RSH服务步骤:启动rexec,rsh,rlogin服务 chkconfig rsh on chkconfig rexec onchkconfig rlogin on修改/etc/hosts文件,加入主机和IP的解析行.如:10.0.38.1 node1 在root目录下建立.rhosts文件,写入主机名称.修改/etc/pam.d目录下rlogin,rsh,login文件内容,把这三个文件中有scurity一词的行注释掉./etc/init.d/xinetd restart.验证RSH配置, 执行命
59、令#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机执行RSH A,未提示输入口令即可登陆到A机。 或者执行命令:# for i in seq A B;do rsh node$i hostname;done如果返回集群的节点名序列则开通rsh成功。谢谢谢谢! !