武汉大学曙光集群培训 - cas · 2015-05-13 · shell 编程基础 linux 操作系统培训...
TRANSCRIPT
武汉大学曙光集群培训
目录目录目录目录目录目录目录目录
�Shell编程基础�Linux操作系统培训�并行集群调试
�作业调度系统的使用
�科学计算程序的编译、运行
�Shell编程基础�Linux操作系统培训�并行集群环境搭建
�作业调度系统的使用
�PBS/Torque系统简介�PBS/Torque的安装配置�作业脚本与常用命令
�高级功能(Torque+Maui)
�科学计算程序的编译、运行
PBS/Torque系统简介
PBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/Torque
• PBS (Portable Batch System)PBS最初由NASA的Ames研究中心开发,为了提供一个能满足异构计算网络需要为了提供一个能满足异构计算网络需要的软件包,特别是满足高性能计算的需要。它力求提供对批处理的初始化和调度执行的控制,允许作业在不同主机间的路由。
PBSPBSPBSPBSPBSPBSPBSPBS的组成的组成的组成的组成的组成的组成的组成的组成
• 主要有用户服务器pbs_server,作业调度器pbs_sched,节点执行器pbs_mom三部分组成,三者之间协同工作,共同三部分组成,三者之间协同工作,共同实现作业管理、作业调度和负载平衡等工作,原理如下图:
PBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/TorquePBS/Torque的安装配置的安装配置的安装配置的安装配置的安装配置的安装配置的安装配置的安装配置
PBSPBSPBSPBSPBSPBSPBSPBS运行的前提条件运行的前提条件运行的前提条件运行的前提条件运行的前提条件运行的前提条件运行的前提条件运行的前提条件
• 服务器与计算节点的rsh必须能正常使用• 对某个用户的配置
– ${HOME}/.rhosts,加入所有主机名– ${HOME}/.rhosts,加入所有主机名
• 对所有用户的配置–计算节点/etc/hosts.equiv是服务器名–服务器/etc/hosts.equiv是所有计算节点名
安装服务器端安装服务器端安装服务器端安装服务器端安装服务器端安装服务器端安装服务器端安装服务器端
• 用源码来安装#./configure --set-server-
home=/var/spool/pbs --set-default-home=/var/spool/pbs --set-default-server=server_name
#make#make install
服务器端的目录结构服务器端的目录结构服务器端的目录结构服务器端的目录结构服务器端的目录结构服务器端的目录结构服务器端的目录结构服务器端的目录结构
服务器端的配置服务器端的配置服务器端的配置服务器端的配置服务器端的配置服务器端的配置服务器端的配置服务器端的配置
• 向/var/spool/pbs/server_name中添加服务器节点的主机名
• 将集群中所有计算节点的主机名加入/var/spool/pbs/server_priv/nodes
• 将集群中所有计算节点的主机名加入/var/spool/pbs/server_priv/nodes中,每个节点一行,如node01 np=2
• 将/var/spool/pbs/mom_priv/config中的,$clienthost改为$clienthost server_name
安装配置客户端安装配置客户端安装配置客户端安装配置客户端安装配置客户端安装配置客户端安装配置客户端安装配置客户端
客户端server_name与config的路径和配置与服务器端的完全一样
• 加为开机自动启动• 加为开机自动启动chkconfig –add pbs_mom
服务的启动服务的启动服务的启动服务的启动服务的启动服务的启动服务的启动服务的启动
• 服务器端启动修改/etc/pbs.conf 把start_sched=0 改为1为1/etc/init.d/pbs_server start
• 客户端启动/etc/init.d/pbs_mom start
创建队列创建队列创建队列创建队列创建队列创建队列创建队列创建队列
• 自动创建队列#cd /var/spool/pbs#qmgr <pbs_config.sample
PBSPBSPBSPBSPBSPBSPBSPBS的使用步骤的使用步骤的使用步骤的使用步骤的使用步骤的使用步骤的使用步骤的使用步骤
• 准备:编写描述改作业的脚本,包括作业名,需要的资源等。
• 提交:使用qsub命令将该作业提交给PBS服务器器
• 排队:服务器将该任务排入适当的队列• 调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。
• 执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。
PBS PBS PBS PBS PBS PBS PBS PBS 作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本
脚本组成说明脚本组成说明脚本组成说明脚本组成说明脚本组成说明脚本组成说明脚本组成说明脚本组成说明
• 注释,以“#”开头• PBS指令,以“#PBS”开头• 命令,其他开头• 命令,其他开头
简单脚本简单脚本简单脚本简单脚本简单脚本简单脚本简单脚本简单脚本
# test.pbs , 列出所有节点列出所有节点列出所有节点列出所有节点#PBS -l nodes=16 # oe output and error as output (do not create *.e* ) # eo output and error as error (do not create *.o*) #PBS -j oe# send email on event # a abort # b begin e end # n never #PBS -m ae # send email to following user #PBS -M [email protected]=$(wc -l $PBS_NODEFILE | awk '{print $1}') echo "using nodes ("$NP"):" cat $PBS_NODEFILE
MPIMPIMPIMPIMPIMPIMPIMPI作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本作业脚本
# Sample PBS script for MPICH#PBS -l nodes=16#PBS -j oe#PBS -m ae#PBS -M [email protected]#PBS -M [email protected]
NP=$(wc -l $PBS_NODEFILE | awk '{print $1}')
echo "nodes ($NP cpu total):"sort $PBS_NODEFILE | uniq
cd $PBS_O_WORKDIRmpirun -machinefile $PBS_NODEFILE -np $NP
<filename>
PBSPBSPBSPBSPBSPBSPBSPBS的常用命令的常用命令的常用命令的常用命令的常用命令的常用命令的常用命令的常用命令
提交作业提交作业提交作业提交作业提交作业提交作业提交作业提交作业
$ qsub test.pbs -l nodes=16
-l 用于描述作业需要的资源,例如:nodes=4 (4 节点每节点 1个 CPU )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”状态-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 - Suspends a job in the queue.
qhold job_identifier ...• qrls - Reactivates a suspended job in the
queue.qrls job_identifier ...
• qrerun 重新运作作业• qmove 目标队列 作业ID
PBSPBSPBSPBSPBSPBSPBSPBS服务器管理服务器管理服务器管理服务器管理服务器管理服务器管理服务器管理服务器管理
PBSPBSPBSPBSPBSPBSPBSPBS服务器管理命令服务器管理命令服务器管理命令服务器管理命令服务器管理命令服务器管理命令服务器管理命令服务器管理命令
设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制设置服务器级的访问控制
• s s acl_host_enable=true
指明是否使用acl_hosts属性,缺省为falsefalse
• s s acl_hosts+=hostname.domain
缺省值允许所有的主机
• s s acl_user_enable=true• s s
设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制设置队列级的访问控制
• 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_user_enable=true• s q qname
[email protected]• 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时间,内存等。或者是CPU时间,内存等。• qsub –l cput=00:10:00 script
资源描述资源描述资源描述资源描述资源描述资源描述资源描述资源描述
• cput 作业总共需要的CPU时间.• file 作业要创建的文件大小.• nice 作业优先级(nice值).• pcput 作业中单个进程需要的CPU时间.• pmem 作业中单个进程需要的物理内存大小.• pmem 作业中单个进程需要的物理内存大小.• pvmem 作业中单个进程需要的虚拟内存大小.• vmem 作业总共需要的虚拟内存大小.• walltime 作业运行的实际时间.• arch 作业需要的系统体系结构.• host 作业运行的节点名.• nodes 作业运行需保留的节点数.• other 其他资源.• software 作业需要的软件的名称.
正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制正在运行的作业数目限制
• 服务器级– 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
PBSPBSPBSPBSPBSPBSPBSPBS高级功能高级功能高级功能高级功能高级功能高级功能高级功能高级功能
MauiMauiMauiMauiMauiMauiMauiMaui作业调度工具作业调度工具作业调度工具作业调度工具作业调度工具作业调度工具作业调度工具作业调度工具
• 安装– tar -zxf maui-3.2.6p19.tar.gz– ./configure --with-pbs=/usr/local– make– make– make install
• 配置– service pbs_sched stop– service maui.d restart
MauiMauiMauiMauiMauiMauiMauiMaui配置配置配置配置配置配置配置配置
• vi /usr/local/maui/maui.cfg– RMPOLLINTERVAL 00:00:10 //资源信息更新时间– DOWNNODEDELAYTIME 48:00:00 //设置节点离线最长时间– JOBNODEMATCHPOLICY EXACTNODE //按照节点计算资源– NODEACCESSPOLICY SHARED //节点可以被多个任务使用– BACKFILLPOLICY NONE //使作业按照发送先后顺序获– BACKFILLPOLICY NONE //使作业按照发送先后顺序获
//取节点资源– RESERVATIONPOLICY CURRENTHIGHEST//作业调度优先级– NODEALLOCATIONPOLICY CPULOAD //根据CPU负载决定资源获
//取顺序
关于MAUI 各个配置参数的意义,请查看http://www.clusterresources.com/products/maui/docs/a.fparameters.shtml
MauiMauiMauiMauiMauiMauiMauiMaui高级配置高级配置高级配置高级配置高级配置高级配置高级配置高级配置• 对用户组进行修饰
– USERCFG[DEFAULT] MAXJOB=16 MAXNODE=16– GROUPCFG[zxyang] MAXPROC=32– GROUPCFG[shma] MAXPROC=8– GROUPCFG[txwang] MAXPROC=8– GROUPCFG[xqdai] MAXPROC=32
• 对节点进行修饰– NODECFG[DEFAULT] MAXLOAD=2.5– NODECFG[node031] MAXJOB=2 PROCSPEED=600 PARTITION=small
• 对节点与用户进行修饰– SRCFG[tmp1]
HOSTLIST=node2,node3,node4,node5,node6,node7,node8,node14,node15– SRCFG[tmp1] USERLIST=accelrys,master,doctor,wlliu,nanosun,tanxin,myl– SRCFG[tmp1] PERIOD=INFINITY
PAMPAMPAMPAMPAMPAMPAMPAM认证设置认证设置认证设置认证设置认证设置认证设置认证设置认证设置
• 限制用户绕过作业调度提交作业• vi /etc/security/access.conf
– -:ALL EXCEPT root shi:ALL
• vi /etc/pam.d/system-auth• vi /etc/pam.d/system-auth– account sufficient
/lib64/security/$ISA/pam_pbssimpleauth.so– account required
/lib64/security/$ISA/pam_access.so
作业调度记账系统作业调度记账系统作业调度记账系统作业调度记账系统作业调度记账系统作业调度记账系统作业调度记账系统作业调度记账系统(pbsacct)(pbsacct)(pbsacct)(pbsacct)(pbsacct)(pbsacct)(pbsacct)(pbsacct)
• 下载地址:– ftp://ftp.fysik.dtu.dk/pub/PBS/
• 使用方式:– # pbsacct /var/spool/torque/server_priv/accounting/200804*– # pbsacct /var/spool/torque/server_priv/accounting/200804*
• 历史作业查询:– Usage: /usr/local/bin/joblist (-j Jobid | -n UserName) Date– joblist -j 31613 20081013
• 查询jobid为31613 发生于20081013的作业情况
– joblist -n bdb 20081013• 查询用户bdb发生于20081013的作业情况
– joblist -n bdb 2008101*• 采用通配符方式查询用户bdb的作业情况
�Shell编程基础�Linux操作系统培训�并行集群环境搭建
�作业调度系统的使用
�科学计算程序的编译、运行
�数学函数库的编译与使用
�科学计算程序的编译、运行
数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用数学函数库的编译与使用
IndexIndexIndexIndexIndexIndexIndexIndex
•• ACMLACMLACMLACMLACMLACMLACMLACML
•• BLASBLASBLASBLASBLASBLASBLASBLAS库库库库库库库库
•• LAPACKLAPACKLAPACKLAPACKLAPACKLAPACKLAPACKLAPACK库库库库库库库库
•••• BLASCBLASCBLASCBLASCBLASCBLASCBLASCBLASC
•• ScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACK
•• GOTOGOTOGOTOGOTOGOTOGOTOGOTOGOTO库库库库库库库库
•• ATLASATLASATLASATLASATLASATLASATLASATLAS库库库库库库库库
•• FFTWFFTWFFTWFFTWFFTWFFTWFFTWFFTW库库库库库库库库
ACMLACMLACMLACMLACMLACMLACMLACML库库库库库库库库
• 两种安装方式– 源码安装
• tar -xzvf acml-64bit-2-1-0.tgz
• 执行./install64.sh– 然后按提示输入– 然后按提示输入
• 安装完毕,acml安装在/opt/acml2.1.0目录下
– PGI自带ACML库• 通过安装PGI编译器安装ACML库
BLASBLASBLASBLASBLASBLASBLASBLAS
• 系统自带– /usr/lib64/libblas.a– /usr/lib64/libblas.so
• 源码安装• 源码安装– tar –xzvf blas.tar.gz
– 重新编辑Makefile文件– 执行make,生成库文件libblas.a
LAPACKLAPACKLAPACKLAPACKLAPACKLAPACKLAPACKLAPACK库库库库库库库库
• 源码安装– 安装LAPACK库之前,首先系统已经安装了BLAS库。
• tar –xzvf lapack.gz
• 从LAPACK/INSTALL目录下相应平台的Make文件到LAPACK目录下,对于Linux平台来说, cp 目录下,对于Linux平台来说, cp LAPACK/INSTALL/make.inc.LINUX LAPACK/make.inc 。
• 修改LAPACK/make.inc文件,主要修改BLAS库的路径,将BLASLIB=../../blas$(PLAT).a修改为系统中的BLAS库。
• 进入LAPACK目录,执行make,生成LAPACK库文件lapack_LINUX.a
MPIMPIMPIMPIMPIMPIMPIMPIBLACBLACBLACBLACBLACBLACBLACBLACSSSSSSSS
• 源码安装– 在安装MPIBLACS之前,首先要确定已经在系统中成功安装了MPI或者PVM。
• 执行tar –xzvf mpiblacs.tgz,解开压缩包• 执行cd BLACS进入BLACS的主目录• 执行cd BLACS进入BLACS的主目录• 从BMAKES目录下拷贝相应的Make配置文件到BLACS的主目录下,例如,系统是采用Linux操作系统并且希望采用MPI安装BLASC,则执行cp BMAKES/Bmake.MPI-LINUX Bmake.inc
• 编辑Bmake.inc文件• 若是采用Intel编译器或pgi编译器,需要修改Bmake.inc文件中
Fortran转C语言部分参数• 在BLACS主目录下执行make mpi
ScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACKScaLAPACK• 源码安装
– 在安装ScaLAPACK之前,首先要确定已经在系统中成功安装了MPI、BLAS和MPIBLACS,确定在上述几个软件安装好以后,再开始安装ScaLAPACK。
• 执行tar –xzvf lapack.tgz,解开压缩包• 执行cd SCALAPACK进入SCALAPACK的主目录• 执行cd SCALAPACK进入SCALAPACK的主目录• 从INSTALL目录下拷贝相应的Make配置文件到SCALAPACK的主目录下,例如,系统是采用Linux操作系统的,则执行cp INSTALL/SLmake.LINUX SLmake.inc
• 编辑SLmake.inc文件• 若是采用Intel编译器或pgi编译器,需要修改SLmake.inc文件中Fortran转C语言部分参数
• 在SCALAPACK主目录下执行make• 在SCALAPACK/TESTING/EIG目录下执行make• 在SCALAPACK/TESTING/LIN目录下执行make
ATLASATLASATLASATLASATLASATLASATLASATLAS库库库库库库库库
• 推荐二进制安装–从网站上下载相对应平台的ATLAS库,然后解压缩即可。
–性能较好–性能较好
GOTOGOTOGOTOGOTOGOTOGOTOGOTOGOTO库库库库库库库库
• 曙光5000A Linpack测试采用的BLAS库–二进制版本:
• 从www.cs.utexas.edu/users/flame/goto/网站上下载相对应平台的GOTO库,然后解压缩即可。GOTO
–源码版本:• 执行tar zxf GotoBLAS-1.26.tar.gz• 执行cd GotoBLAS• 修改Makefile.rule• make –j 8• make install
FFTWFFTWFFTWFFTWFFTWFFTWFFTWFFTW库库库库库库库库
• 源码安装– 从网站上下载fftw库的源代码包 fftw-3.0.1.tar.gz– 执行 tar –xzvf fftw-3.0.1.tar.gz进行解包– 执行cd fftw-3.0.1进入fftw的目录– 执行./configure –prefix=<install_dir>,其中
<install_dir>为你要安装fftw库的目录– 执行make– 执行make install– 安装完毕
科学计算程序的编译科学计算程序的编译科学计算程序的编译科学计算程序的编译、、、、运行运行运行运行科学计算程序的编译科学计算程序的编译科学计算程序的编译科学计算程序的编译、、、、运行运行运行运行
• DOCK–生物、化学
• WRF–气象、环境–气象、环境
• VASP–从头计算量子化学
• LS-DYNA–显式动力分析软件
DOCKDOCKDOCKDOCKDOCKDOCKDOCKDOCK
• 编译– 1下载源包 dock.6.2_source.tar.gz– 2 解压 tar xvzf dock.6.2_source.tar.gz– 3 编译– 3
• A 进入路径 cd dock6/install• B ./configure gnu parallel• C export MPICH_HOME=your-MPICH• D make
• 运行– 生成grid文件– pbs提交作业
DOCKDOCKDOCKDOCKDOCKDOCKDOCKDOCK
• pbs脚本
– #PBS -N dock– #PBS -l nodes=8:ppn=4– #PBS -l nodes=8:ppn=4– cd /data1/user/test/dock/dock6/tutorials/mpi_demo/4_dock/– time /data1/openmpi.static.pgi/bin/mpirun -np 32 --mca btl
tcp,self,sm ../../../bin/dock6.mpi -i mpi.in -o mpi.out
WRFWRFWRFWRFWRFWRFWRFWRF
• 编译安装– 首先环境变量设置,运行 ./en.sh– 解压缩netcdf– 输入 ./configure --prefix=/opt/netcdf– export NETCDF=/opt/netcdf– export NETCDF=/opt/netcdf– make;make install
– 解压缩WRF– 进入wrf文件夹– ./configure ,里面会有选择,选择3就可以了– ./comepile em_real
• 运行– pbs作业提交
WRFWRFWRFWRFWRFWRFWRFWRF
• pbs脚本– #PBS -N wrf– #PBS -l nodes=1:ppn=4
– cd /data1/user/test/WRFV2/test/em_real– time /data1/openmpi.static.pgi/bin/mpirun --mca btl
tcp,self,sm -np 4 ./wrf.exe
VASPVASPVASPVASPVASPVASPVASPVASP
• 编译安装–解压源码包–编译lib
• 修改Makefile• 修改Makefile
–编译vasp• 修改Makefile
• 运行– pbs作业提交
VASPVASPVASPVASPVASPVASPVASPVASP
• pbs脚本– #PBS -N vasp– #PBS -l nodes=2:ppn=4– cd /data1/user/test/vasp.Hg– cd /data1/user/test/vasp.Hg– time /data1/openmpi.static.pgi/bin/mpirun --mca btl
tcp,self,sm -np 8 ./vasp
LSLSLSLSLSLSLSLS--------DYNADYNADYNADYNADYNADYNADYNADYNA
• 安装– 不需要编译
• 运行– pbs作业调度提交– pbs作业调度提交
• pbs脚本– #PBS -N lsdyna– #PBS -l nodes=node3:ppn=4+node4:ppn=4+node5:ppn=4+node6:ppn=4– cd $PBS_O_WORKDIR– NODEFILE=`sort $PBS_NODEFILE | uniq -c | awk '{ printf("%s:%s:" , $2,
$1); }'`– time ansys110 -lsdynampp -np 16 i=j.k -machines $NODEFILE
memory=200M
•欢迎提问!