曙光培训文档 - 中国科学院昆明动物研究所>> 网站首页

advertisement
中科院昆明动物研究所培训
---2008.11 云南昆明--- 8008100466
售前工程师:张希韬 TEL:13888565007
Liuyi 13888013108 wangwei 13888002063
•
•
•
•
•
1.曙光简介
2.高性能计算机基础
3.LINUX基础
4.高性能集群并行环境基础
5.机房现场介绍
1.曙光简介(见PPT)
2.高性能计算基础
• 2.1 什么是高性能并行计算机
• 由众多部件组成,具有运算速度快、存储容量大、可靠性
高的特性。也称为:巨型计算机、超级计算机目前任何高
性能计算和超级计算都离不开使用并行技术,所以高性能
计算机肯定是并行计算机。
• 2.2高性能计算机的发展
• 专用时代
包括向量机,MPP系统,SGI NUMA 系统,SUN大型SMP系
统,也包括我国的神威,银河,曙光1000,KJ。之所以称
为“专用”,并不是说它们只能运行某种应用,是指它们
的组成部件是专门设计的,它们的CPU板,内存板,I/O板,
操作系统,甚至I/O系统,都是不能在其它系统中使用的。
由于技术上桌面系统与高端系统的巨大差异,和用户群窄
小。
•
普及时代
高性能计算机价格下降,应用门槛降低,应用开始普
及。两个技术趋势起到重要作用。商品化趋势使得大量生
产的商品部件接近了高性能计算机专有部件标准化趋势使
得这些部件之间能够集成一个系统中,其中X86处理器、
以太网、内存部件、Linux都起到决定性作用。机群系统
是高性能计算机的一种,其技术基础和工业基础都是商品
化和标准化。
• 2.3 流行的高性能计算机架构
•
•
•
•
•
•
并行向量机
SMP
DSM(NUMA)
MPP,节点可以是单处理器的节点,也可以是SMP,DSM
Cluster
混合架构
•
•
•
•
•
•
•
2.4 高性能计算市场竞争格局
HP
IBM
DELL
联想
SGI
曙光
三大厂商机架式服务器
三大厂商刀片式服务器
• 2.5 曙光高性能计算解决方案
•
•
•
•
PHPC
机架式集群
刀片式集群
二代小型机
• 机架式集群
•
•
•
•
•
•
•
•
•
•
应用领域–计算中心、CAE、计算化学、生物信息学等8-128节点应用
曙光方案
计算节点: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
中小规模集群(8-64)
大规模集群(64-128)
• 刀片式集群
•
•
•
•
•
•
•
•
•
•
•
应用领域–计算中心、CAE、计算化学、生物信息学等8-512节点应用
曙光方案
计算节点: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
刀片服务器方案优势
–大规模计算机群功耗、占地面积有明显降低,节能环保
–丰富的管理软件,提升系统易用性
刀片集群(64-256)
曙光5000系统
• 曙光5000的第一套系统于08年12月落户“上海超级计算中心”,系
统峰值运算速度达到每秒230万亿次浮点运行(230TFLOPS),是目
前国内速度最快的商用高性能计算机系统,这标志着中国成为继美国
之后第二个能制造和应用超百万亿次商用高性能计算机的国家,也表
明我国生产、应用、维护高性能计算机的能力达到世界先进水平
• 曙光5000是节点以刀片为主(刀片的CPU总数超过60个),集成
GridView软件和曙光机柜的高性能计算机系统
• 曙光5000系统:
每机柜可达50片四路四核刀片(占用空间35U)
每机柜可达200CPU,800核的超高计算密度
曙光公司部分成功案例
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
中科院物理所
中科院力学所
中科院物数所
中国地质大学材化学院
中国地质大学数物学院
中科院长春应用化学所
云南大学
烟台师范大学物理系
华东理工大学
郑州大学材料物理实验室
武汉大学纳米设计实验室
武汉大学空间物理实验室
华中师范大学化学系
中山大学物理系
山东师范大学:
湘潭大学:
南京航空航天大学:
3.LINUX基础(见PPT)
4.高性能集群并行环境基础
• 并行编程标准
1.多线程库标准
–– Win32 API.
–– POSIX threads.
2.编译制导标准
–– OpenMP – 可移植共享存储并行编程标准.
3.消息传递库标准
–– MPI
–– PVM
• Massage Passing Interface:是消息传递函数库的标
准规范.由MPI论坛开发.支持Fortran和C.
• 一种新的库描述, 不是一种语言.
• 发展的两个阶段
–MPI 1.1: 1995
• MPICH:是MPI最流行的非专利实现,由Argonne国家实验室和密
西西比州立大学联合开发,具有更好的可移植性.
–MPI 1.2-2.0:动态进程, 并行 I/O, 支持F90和
C++(1997).
• 消息传递并行程序设计
– 指用户必须通过显式地发送和接收消息来实现处理机间的数据交
换。
– 在这种并行编程中,每个并行进程均有自己独立的地址空间,相
互之间访问不能直接进行,必须通过显式的消息传递来实现。
– 这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采
用的主要编程方式。
• 并行计算粒度大,特别适合于大规模可扩展并行算法
– 由于消息传递程序设计要求用户很好地分解问题,组织不同进程间
的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法.
• 消息传递是当前并行计算领域的一个非常重要的并行程序
设计方式
为什么要用MPI?
• 高可移植性
–MPI已在IBM PC机上、MS Windows上、所有主
要的Unix工作站上和所有主流的并行机上得到
实现。使用MPI作消息传递的C或Fortran并行
程序可不加改变地运行在IBM PC、MS Windows、
Unix工作站、以及各种并行机上。
PBS作业调度系统
• PBS最初由NASA的Ames研究中心开发,
为了提供一个能满足异构计算网络需要的
软件包。它力求提供对批处理的初始化和
调度执行的控制,允许作业在不同主机间
的路由。
OpenPBS作业调度系统
组成
• 资源管理器:管理集群的硬件资源及认证信息等
• 队列管理器:管理当前所有已提交但还未完成的作业
• 调度器:为作业分配资源
作用
• 单一系统映象
机群松散的结构的整合
• 系统资源整合
异构系统的整合
• 多用户的管理
用户提交的任务的统一安排,避免冲突
• 用户权限的管理
非授权用户的控制
作业管理系统的结构
作业特性比较
系统特性
SGE
LSF
OPEN PBS
PBS PRO
支持异构平台
Unix & NT,多
硬件
Unix & NT,多
硬件
仅Unix ,多硬件
仅Unix ,多硬
件
用户操作接口
API/GUI/CLI/W
EB,管理复杂
API/GUI/CLI/W
EB,管理方便
API/GUI/CLI,功 API/GUI/CLI/W
能少
EB ,管理方便
支持DRMAA
支持
不支持
支持
支持
支持POSIX批处
理API标准
支持
不支持
支持
支持
源代码开放
开放
不开放
开放
付费后开放
用户文档支持
非常详细
非常详细
较简单
详细
支持批处理作业
支持
支持
支持
支持
支持交互式作业
支持
支持
不支持
支持
支持海量作业组
支持
支持
不支持
支持
支持并行作业
支持
支持
支持
支持
支持PVM/MPI
支持,功能强
支持,功能强大 支持,功能弱
支持,功能强
队列管理、调度特性比较
系统特性
SGE
LSF
OPEN PBS
PBS PRO
支持多队列调度 支持
支持
支持
支持
支持作业控制
支持,功能完
善
支持,功能完善
支持,功能简
单
支持,功能完善
支持作业前置/
后置脚本
支持
支持
支持
支持
标准调度算法
支持,2种算法
支持,6种算法
支持,2种算法
支持,多种算法
自定义调度算法 支持
不开源,故不支持
支持
支持
使用外部调度器 支持
不开源,故不支持
支持
支持
高级资源预留
支持
支持
不支持
支持
Backfill调度
从6.0起支持,
但使用较复杂
算法支持,使用方
便,且十分高效
不支持
不支持
支持抢占调度
支持
支持
不支持
支持
支持共享调度
支持
支持,且有专利的
高效的竞标式算法
支持
支持
• PBS 的组成
•
•
•
•
服务器:pbs_server
调度器:pbs_sched
执行器:pbs_mom
命令行:用户脚本,管理命令等
• PBS 的基本原理
PBS的使用步骤
1.
2.
3.
4.
5.
6.
7.
准备:编写描述改作业的脚本,包括作业名,需要的资
源等。
提交:使用qsub命令将该作业提交给PBS服务器
排队:服务器将该任务排入适当的队列
调度:服务器检查各工作节点的状态是否符合该作业的
要求,并进行调度。
执行:当条件满足时,作业被发给相应的执行服务器执
行。程序运行时执行服务器会收集程序的标准输出和标
准错误流,等程序结束时,将这些信息返回给用户。
查询和调整:当作业在运行时,用户可以使用qstat进行
状态查询。用户发现作业提交错误时,可以使用qdel删
除正在运行的作业。
查看结果:使用文本编辑软件vi或者系统命令cat, less等
查看输出及错误信息显示。
PBS 的基本命令
在PBS系统中,用户使用qsub 命令提交用户程序。用户
运行程序的命令及PBS环境变量设置组成PBS作业脚本,
作业脚本使用如下格式提交到PBS系统运行:
[zhaocs@node1 ~]$ qsub <PBS作业脚本>
qsub运行参数
运行参数
说
明
-a <作业开始运行的时间>
向PBS系统指定作业运行的开始时间。
作业运行时间格式为:
[[[[CC]YY]MM]DD]hhmm[.SS]
-A <用户名>
使用不同的用户来提交作业,缺省使用当前用户名
-o <标准输出文件的路径>
-e <标准错误输出的路径>
该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出
和标准错误输出放在用户qsub命令提交作业的目录下。
标准错误输出:<作业名>.o<作业号>
标准错误输出:<作业名>.e<作业号>
路径使用如下格式标准: [<节点名>:]<路径名>
-N <作业名>
指定提交的作业名
-q <目标队列>
指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名
或者是目标节点上的队列。如果目标队列是一个路由队列,那么服
务器可能把作业路由到新的队列中。如果该参数没有指定,命令
qsub会把作业脚本提交到缺省的队列中。
-l <申请资源列表>
该参数指定作业脚本申请的PBS系统资源列表。
申请资源列表使用如下格式:
<资源名>[=[<数量>]][,资源名[=[<数量>]], …..]
例如作业希望申请在双路节点上申请5个CPU资源的情况,
则可以在脚本中如下:
#PBS –l nodes=2:ppn=2+:ppn=1
PBS 作业脚本
• 注释,以“#”开头
• PBS指令,以“#PBS”开头
• SHELL命令
#PBS –N vasp.Hg
#PBS –l nodes=8:ppn=2
echo "This jobs is "$PBS_JOBID@$PBS_QUEUE
cd $PBS_O_WORKDIR
mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp
PBS的环境变量
变量名
说
明
登陆SHELL继承来的变量
包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL
和$TZ。
$PBS_O_HOST
qsub提交的节点名称
$PBS_O_QUEUE
qsub提交的作业的最初队列名称
$PBS_O_WORKDIR
qsub提交的作业的绝对路径
$PBS_JOBID
作业被PBS系统指定的作业号
$PBS_JOBNAME
用户指定的作业名,可以在作业提交的时候用qsub –N <作业名>指
定,或者在PBS脚本中加入#PBS –N <作业名>。
$PBS_NODEFILE
PBS系统指定的作业运行的节点名。该变量在并行机和机群中使用。
当在PBS脚本中用#PBS –l nodes=2:ppn=2指定程序运行的节
点数时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指
定的作业运行的节点名。比如:
#PBS –l nodes=2:ppn=2
mpirun –np 4 –machinefile $PBS_NODEFILE <程序名>
$PBS_QUEUE
PBS脚本在执行时的队列名
PBS 作业脚本
#PBS –N vasp.Hg
#PBS –l nodes=8:ppn=2
#PBS –q @node1
echo "This jobs is "$PBS_JOBID@$PBS_QUEUE
cd $PBS_O_WORKDIR
mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp
• 注释,以“#”开头
• PBS指令,以“#PBS”开头
• SHELL命令
PBS 作业脚本举例
# 这是一个串行作业脚本的例子
#PBS –N Loop.out
#PBS –l nodes=1:ppn=1
cd /public/home/zhaocs/test/
./a.out > $HOME/result/a.result
# 这是一个并行作业脚本的例子
#PBS –N vasp.Hg
#PBS –l nodes=8:ppn=2
#PBS –q @node1
echo "This jobs is "$PBS_JOBID@$PBS_QUEUE
cd $PBS_O_WORKDIR
mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp
一个复杂的PBS作业脚本
#!/bin/bash
#PBS -N jobname
#PBS -l nodes=4:ppn=2
cat `echo $PBS_NODEFILE` > $HOME/$PBS_JOBID.nodes
for node in `cat $HOME/$PBS_JOBID.nodes`
do
rsh $node mkdir /tmp/$PBS_JOBID
rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/
done
cd /tmp/$PBS_JOBID
mpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vasp
cp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/
for node in `cat $HOME/$PBS_JOBID.nodes`
do
rsh $node rm -rf /tmp/$PBS_JOBID
done
rm $HOME/$PBS_JOBID.nodes
查询和取消作业
[dawning@node1 ~]$ qstat @node1
Job id
Name
User
Time Use S
Queue
---------------- -------------------------------------- - ----93.node1
test.pbs
zhaocs
0
R
default
95.node1
vasp.Hg
vasp
0
E
default
111.node1
structure
amber
0
Q
default
[zhaocs@node1 ~]$ qdel 93.node1
查询作业运行的位置
[zhaocs@node1 ~]$ pbsnode -a
[zhaocs@node1 ~]$ qstat –f
[zhaocs@node1 ~]$ qstat -r
错误处理
• 作业提交后处于排队状态
没有可用的节点,也就是节点资源被其他作业使用;
节点处于忙状态;
调度器失效;
指定的节点失效,或者节点上的mom失效
• 作业提交后异常结束
脚本文件使用的是windows格式
脚本中使用一些命令路径问题
脚本退出但是作业没有退出
用户使用的文件的权限问题
• 处理方法的原则是查看作业的标准输入和标准错误输出的
结果
错误处理(续)
•
如果环境配置错误,可能导致作业反复在等待状态和运
行状态转换,可以通过“qdel 作业号”将该作业删除再
重新配置环境。
可能出现作业显示为运行状态,但是已经没有活动的进
程,可通过“qsig –SIGNULL 作业号”通知server作业
已经退出。
作业的输出无法传出,可能是以下原因造成:
•
•
–
–
–
–
–
目标主机不被信任,并且用户没有.rhost文件
指定了一个错误的路径名
指定的目标目录不可写
目标主机的用户.cshrc执行时产生了输出。
执行主机的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”
和“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 job_identifier ...
• qrls - Reactivates a suspended job in the
queue.
qrls job_identifier ...
• qrerun 重新运作作业
• qmove 目标队列 作业ID
OpenPBS服务器管理
PBS服务器管理命令
设置服务器级的访问控制
• s s acl_host_enable=true
指明是否使用acl_hosts属性,缺省为
false
• s s acl_hosts+=hostname.domain
缺省值允许所有的主机
• s s acl_user_enable=true
• ss
acl_users+=user@hostname.domain
设置队列级的访问控制
•
•
•
•
s q qname acl_host_enable=true
s q qname acl_hosts+=hostname.domain
s q qname acl_user_enable=true
s q qname
acl_users+=user@hostname.domain
• s q qname acl_group_enable=true
• s q qname acl_groups=group_name,[…]
缺省为允许所有组
设置服务器与队列的资源限制
• 服务器级
s s resources_default.resource_name=value
• 队列级
s q qname
resources_default.resource_name=value
资源
• 作业执行中需要的东西。
例如:某个特定的节点、某个软件包,
或者是CPU时间,内存等。
• qsub –l cput=00:10:00 script
资源描述
•
•
•
•
•
•
•
•
•
•
•
•
•
cput
file
nice
pcput
pmem
pvmem
vmem
walltime
arch
host
nodes
other
software
作业总共需要的CPU时间.
作业要创建的文件大小.
作业优先级(nice值).
作业中单个进程需要的CPU时间.
作业中单个进程需要的物理内存大小.
作业中单个进程需要的虚拟内存大小.
作业总共需要的虚拟内存大小.
作业运行的实际时间.
作业需要的系统体系结构.
作业运行的节点名.
作业运行需保留的节点数.
其他资源.
作业需要的软件报名称.
正在运行的作业数目限制
• 服务器级
– s s max_running=value(最多正在运行作业的数目)
– s s max_user_run=value(最多单个用户作业数目)
– s s max_group_run=value(最多单个组任何用户运行
的作业数目)
• 队列级
– s q qname max_running=value
– s q qname max_user_run=value
– s q qname max_group_run=value
PBS的图形界面
Xpbs主窗口
• Xpbs主窗口主要有以下几个部分组成:
菜单,主机,队列,作业和提示信息。
其中菜单包括手工更新数据、自动更新
数据、提交作业、跟踪作业、参数选择、
关闭和帮助等。
PBS图形界面(xpbs)
Xpbsmon图形界面监控
• Xpbsmon是PBS的节点监控的图形界面,
可以直观的显示PBS所运行的系统环境
中所有节点机的工作状态。
• Xpbsmon的配置文件是
$PBS_LIB/xpbsmon/xpbsmonrc和
$HOME/.xpbsmonrc
($PBS_LIB默认/usr/lib,$HOME为/root)
(参考) Linpack测试介绍
Linpack是国际上最流行的用于测试高性能计
算机系统浮点性能的benchmark。通过对高性能
计算机采用高斯消元法求解一元N次稠密线性代
数方程组的测试,评价高性能计算机的浮点性能。
Linpack测试包括三类,Linpack100、
Linpack1000和HPL 。HPL是针对现代并行计算
机提出的测试方式。用户在不修改任意测试程序
的基础上,可以调节问题规模大小(矩阵大小)、
使用CPU数目、使用各种优化方法等等来执行该
测试程序,以获取最佳的性能。
Linpack测试步骤
•
•
•
•
•
•
1、编译器的安装
2、并行环境MPI的安装
3、BLAS库的安装
4、HPL的安装
5、运行的方式
6、查看结果
1、编译器的安装
• 常用的编译器有:GNU PGI Intel编译器
• 如果CPU是Intel的产品,最好使用Intel的编
译器,它针对自己的产品做了一些优化,
可能效果要好一些。
• 这里使用全安装方式下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/mpichgnu --cc=gcc --c++=g++ --fc=g77
• #make
• #make install
• #vi ~/.bashrc文件
加入export PATH=/dawn/test/mpichgnu/bin: $PATH
• #source ~/.bashrc命令使PATH路径起作用。
• #which mpirun,结果应为
/dawn/test/mpich-gnu/bin/mpirun,说明
PATH已被正确设置。
• # vi /dawn/test/mpichgnu/share/machines.LINUX 加入主机名
称,运行第一种HPL用
3、BLAS库的安装
•
•
•
•
•
采用BLAS库的性能对最终测得的Linpack
性能有密切的关系,常用的BLAS库有
GOTO、Atlas、ACML、ESSL、MKL等,
测试经验是GOTO库性能最优。
如果CPU是Intel的产品,建议使用MKL。
这里使用GOTO库。
安装步骤:
下载最新的源代码包GotoBLAS1.13.tar.gz到/dawn/test目录下,此版本的
已不需要补丁文件
•
•
#tar zxvf GotoBLAS-1.13.tar.gz,解压到GotoBLAS目录里面
#vi Makefile.rule,修改的模板如下:
1#
2 # Beginning of user configuration
3#
4
5 # This library's version
6 REVISION = -r1.13
7
8 # Which do you prefer to use for C compiler? Default is gcc.
9 # I recommend you to use GCC because inline assembler is
required.
10 C_COMPILER = GNU
11 # C_COMPILER = INTEL
12
13 # Which do you prefer to use for Fortran compiler? Default is
GNU g77.
14 F_COMPILER = G77
15 # F_COMPILER = G95
16 # F_COMPILER = GFORTRAN
17 # F_COMPILER = INTEL
18 # F_COMPILER = PGI
19 # F_COMPILER = PATHSCALE
20 # F_COMPILER = IBM
21 # F_COMPILER = COMPAQ
22 # F_COMPILER = SUN
23 # F_COMPILER = F2C
24
25 # If you need 64bit binary; some architecture can accept both
32bit and
26 # 64bit binary(EM64T, Opteron, SPARC and Power/PowerPC).
27 BINARY64 = 1
28
29 # If you want to build threaded version.
30 # You can specify number of threads by environment value
31 # "OMP_NUM_THREADS", otherwise, it's automatically detected.
32 SMP = 1
33
34 # You may specify Maximum number of threads. It should be
minimum.
35 # For OpenMP users; you have to specify MAX_THREADS even
if you don't
36 # use threaded BLAS(MAX_THREADS >=
OMP_NUM_THREADS * GOTO_NUM_THREADS)
37 MAX_THREADS = 8
55 # If you want to use memory affinity (NUMA)
56 # You can't use it with ALLOC_STATIC
57 # NUMA_AFFINITY = 1
• #make(编译静态库libgoto_opteronp-r1.13.a)
• #cd exports
• #make so (编译动态库libgoto_opteronp-r1.13.so)
4、HPL的安装
•
•
•
•
下载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_FBLAS
66 # ---------------------------------------------------------------------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
library
81 # header files, MPlib is defined to be the name of the library to
be
82 # used. The variable MPdir is only used for defining MPinc and
MPlib.
83 #
84 MPdir
= /dawn/test/mpich-gnu
85 MPinc
= -I$(MPdir)/include
86 MPlib
= $(MPdir)/lib/libmpich.a
把84行的MPdir的路径改为刚才安装的mpich所在的目录绝对路径。
其中第86行的libmpich.a是mpich-1.2.7p1的mpi消息传递库
找到
88 # ----------------------------------------------------------------------
89 # - Linear Algebra library (BLAS or VSIPL) ----------------------------90 # ---------------------------------------------------------------------91 # LAinc tells the C compiler where to find the Linear Algebra
library
92 # header files, LAlib is defined to be the name of the library to
be
93 # used. The variable LAdir is only used for defining LAinc and
LAlib.
94 #
95 LAdir
= /dawn/test/GotoBLAS
96 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/mpicc
170 CCNOOPT
= $(HPL_DEFS)
171 CCFLAGS
= $(HPL_DEFS) -fomit-frame-pointer -03-funrollloops -W -Wall
172 #
173 # On some platforms, it is necessary to use the Fortran linker
to find
174 # 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文件,使用一个新的
后缀名(如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%,得出N=20000,
测试者希望本测试连续运行三次,则第五
行设3,本行取小于等于20000的任意三个
数字。
第7、8行:这两个数字与库类型有关,如
第7行设3,第八行就要将下表中的某个数
字连写三遍,这个数字有一些经验值。
见下表:
平台
L2 Cache 数
学库
NB
Intel P4 Xeon L2:512KB
ATLAS
400
AMD Opteron L2:1MB
MKL
GOTO
GOTO
384
192
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 file
Innovative 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 21000 19000 Ns
3
# of NBs
192 232 256 NBs
1
PMAP process mapping (0=Row-,1=Column-major)
1
# of process grids (P x Q)
1
Ps
1
Qs
16.0
threshold
1
# of panel fact
1 PFACTs (0=left, 1=Crout, 2=Right)
1
# of recursive stopping criterium
4
1
NBMINs (>= 1)
# of panels in recursion
2
1
1
1
3
1
2
2
64
0
0
1
8
NDIVs
# of recursive panel fact.
RFACTs (0=left, 1=Crout, 2=Right)
# of broadcast
BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
# of lookahead depth
DEPTHs (>=0)
SWAP (0=bin-exch,1=long,2=mix)
swapping threshold
L1 in (0=transposed,1=no-transposed) form
U in (0=transposed,1=no-transposed) form
Equilibration (0=no,1=yes)
memory alignment in double (> 0)
5、运行的方式
• 在/dawn/test/hpl/bin/test下执行
• 第一种方式:# mpirun –np N xhpl ( N 为
进程数,取$(MPICH安装目
录)/share/machines.LINUX配置文件)
• 第二种方式:#mpirun –p4pg <p4file>
xhpl 需要自己编写配置文件《p4file》指
定每个进程在哪个节点运行
• 下面是一个<p4file>的样例。
#vi p4file
gnode1 0 /dawn/test/hpl/test/bin/xhpl
gnode1 1 /dawn/test/hpl/test/bin/xhpl
gnode2 1 /dawn/test/hpl/test/bin/xhpl
gnode2 1 /dawn/test/hpl/test/bin/xhpl
6、查看结果
• 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 ...... PASSED
||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每个时钟周期执行浮点运算的次数
CPU
Flops/Cyc
le
CPU
Flops/Cyc
le
CPU
Flops/Cyc
le
Itanium2
4
Opteron
2
Xeon(双
核)
2
Barcelona
4
Xeon(四核)
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 cores
2 cores
4 cores
8 cores
16 cores
32 cores
55%
55%
55%
65%
65%
65%
65%
70%
70%
70%
70%
70%
75%
75%
75%
75%
75%
≤0.125G
0.25G
0.5G
≥1 G
75%
• 表三:集群Linpack测试的具体标准参照表
每个core
分配的内
≤32cores
存
集群的总核数
36-64
cores
68-128
cores
132-256
cores
256512cores
≤0.125G
50%±5%
0.25G
55%±5% 50%±5% 45%±5% 40%±5% 35%±5%
0.5G
60%±5% 55%±5% 50%±5% 45%±5% 40%±5%
≥1G
65%±5% 60%±5% 55%±5% 50%±5% 45%±5%
45%±5% 40%±5% 35%±5% 30%±5%
备注:此表是适用于双核集群的测试标准,根据实际的测试经验,
四核集群的标准值要低十个百分点左右。另外,为了减少工作量,
建议每个集群规模不要多于16个节点。
三、集群Linpack测试脚本的使用
说明
• 使用脚本程序测试Linpack要求集群节点序列号是连续的,
所有节点的操作系统是统一的版本,并对集群的所有节点
的/etc/hosts文件进行如下修改:
127.0.0.1
localhost
百兆网卡的IP地址
bnodexx
千兆网卡的IP地址
nodexx
---------------------------------• 集群的所有节点的/etc/sysconfig/network文件中
HOSTNAME=nodexx;并且rsh 配通。
集群配置RSH服务步骤:
• 启动rexec,rsh,rlogin服务
chkconfig rsh on
chkconfig rexec on
chkconfig 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配置, 执
行命令#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成
功。
谢谢!
Download