![]() |
不爱学习的钥匙扣 · 使用lua-cmsgpack序列化和反序列化 ...· 11 月前 · |
![]() |
潇洒的电梯 · 一个奇葩错误:Invalid ...· 1 年前 · |
![]() |
踢足球的剪刀 · django多应用之间_51CTO博客· 1 年前 · |
![]() |
茫然的烈马 · 【工作中问题解决实践 ...· 1 年前 · |
Ÿ 刀片计算系统共有10台曙光CX50-G20双路刀片,CPU整体峰值性能达到8.231万亿次/秒。每台刀片计算节点配置2颗Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz十二处理器,64G DDR4内存。
Ÿ GPU计算系统共有2台曙光W580I-G20。每台GPGPU计算节点配置2块Nvidia Tesla K40m GPU卡。
Ÿ 系统配备曙光Parastor200分布式并行文件系统,存储容量为90TB。
Ÿ 系统配置登陆管理节点2台,部署曙光Gridview 3.2集群管理系统。用户可通过IP地址实现Web访问。
Ÿ 系统配置1套线速互联的56Gb FDR Infiniband网络。
12.1.0
/public/software/intel/composer_xe_2011_sp1.7.256
source /public/software/profile.d/intel-env.sh
C:icc
C++:icpc
F77:ifort
F90:ifort
clussoft自动安装
12.1.0
/public/software/intel/composer_xe_2011_sp1.7.256/mkl
source /public/software/profile.d/intel-env.sh
ifort/icc ... -L/public/software/intel/composer_xe_2011_sp1.7.256/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core ...
clussoft自动安装
5.1.0
/public/software/mathlib/acml-510
source /public/software/profile.d/acml-gfortran-env.sh
source /public/software/profile.d/acml-ifort-env.sh
ifort/icc ... -/public/software/mathlib/acml-510/ifort64/lib -lmkl_intel_lp64 -lacml.a…
clussoft自动安装
fftw2-
float
2.1.5
/public/software/mathlib/fftw215-float
clussoft自动安装
fftw2-
double
2.1.5
/public/software/mathlib/fftw215-double
clussoft自动安装
fftw3-
float
3.3.1
/public/software/mathlib/fftw331-float
clussoft自动安装
fftw3-double
3.3.1
/public/software/mathlib/fftw331-double
clussoft自动安装
scalapack
2.0.2
/public/software/mathlib/scalapack-202
clussoft自动安装
计算子系统
可用作业队列
刀片计算节点(默认)
node1-node20
2*AMD Opteron 6172,24 CPU核,32GB内存
queue_blade
GPGPU计算节点
node21-node25
2*Intel Xeon E5620,8 CPU核,12GB内存,4*Nvidia Tesla C2050 GPGPU卡
queue_gpu
SMP计算节点
node26-node30
4*AMD Opteron 6172,48 CPU核,128GB内存
queue_smp
2.使用集群进行计算业务
管理登陆节点node1和node2配置有园区网络地址 202.114.200.61 和 202.114.200.X ,用户可以通过多种登录方式登录集群系统。
Windows用户可以用SSH Secure Shell Client,PuTTY,SecureCRT等SSH客户端软件登录。推荐使用SSH Secure Shell Client,它集成了SFTP文件上传下载功能。
Linux用户可以直接在命令行终端中执行ssh命令进行登录:
$ ssh username@登录节点IP地址
Windows用户可以用SSH Secure Shell Client,winscp等软件实现文件的上传下载。
Linux操作系统直接使用命令
scp filename test@ip:/home/test
远程图形界面登录推荐采用VNC方式。第一次使用VNC登录前,需要先以命令行终端方式登录到集群登录节点,执行vncserver命令,会提示用户输入VNC登录密码,输入后会得到一个VNC会话,一般是“主机名:VNC会话号”格式,如“node32:4”。
Windows用户推荐使用RealVNC软件进行VNC远程图形界面登录,登录时输入集群登录节点IP地址加VNC会话号即可:
Linux用户可以直接在命令行终端中执行vncviewer命令进行登录,如:
vncviewer [登录节点IP地址]:[session number]
用户也可以通过WEB方式登入曙光GridView集群管理系统,对集群进行管理、监控、配置和使用等操作。在WEB浏览器的地址栏中输入以下URL即可出现登录界面:
http://登录节点IP地址:6080
登入后,如果部分图表显示不正常,请为浏览器安装FLASH插件。
以OpenMPI 1.6.3为例:
$ tar zxvf openmpi-1.6.3.tar.gz
$ cd openmpi-1.6.3
$ ./configure --prefix= /public/software/mpi/openmpi-16-intel --enable-mpirun-prefix-by-default --without-psm CC=icc CXX=icpc FC=ifort F77=ifort
$ make -j 8 && make install
设置环境变量脚本:
vim /public/software/profile.d/openmpi-intel-env.sh
#!/bin/bash
export MPI_HOME= /public/software/mpi/openmpi-16-intel
export PATH=${MPI_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${MPI_HOME}/lib:${LD_LIBRARY_PATH}
export MANPATH=${MPI_HOME}/share/man:${MANPATH}
þ Tips :
1. OpenMPI安装会自动检测编译节点本地可用的通信网络设备,如需支持InfiniBand网络,请确保编译MPI前该节点已安装OFED驱动。
2.执行OpenMPI安装目录$MPI_HOME/bin下的ompi_info命令,可查询当前OpenMPI配置信息。
cd /home/your_account/your_workdir
./your_code
cd $HOME
vi .bashrc
export PATH=/home/your_account/your_workdir:$PATH
your_code
OpenMPI提供了C/C++,Fortran等语言的MPI编译器,如下表所示:
$ mpicc -show
icc -I/public/software/mpi/openmpi-16-intel/include -pthread -L/public/software/mpi/openmpi-16-intel/lib -lmpi -ldl -lm -lnuma -Wl,--export-dynamic -lrt -lnsl -lutil
编译程序示例:
$ source /public/software/profile.d/openmpi-intel-env.sh
$ mpicc -o hello hello.c
$ mpif90 -o hello hello.f90
OpenMPI使用自带的OpenRTE进程管理器,启动命令为mpirun/mpiexec/orterun,基本格式如下:
$ mpirun -np N -hostfile <filename> <program>
Ÿ -np N:运行N个进程
Ÿ -hostfile:指定计算节点,文件格式如下:
node1 slots=8
node2 slots=8
slots=8代表可在该节点上执行8个进程,也可将node1和node2分别写8行。
MPICH2编译C、C++、Fortran77和Fortran90的编译器分别为mpicc,mpicxx,mpif70和mpif90。编译程序示例:
source /public/software/profile.d/mpich2-intel-env.sh
mpicc -o hello hello.c
mpif90 -o hello hello.f90
MPICH2默认使用hydra进程管理器,使用mpiexec启动MPI进程(无mpirun),命令格式如下:
$ mpiexec -f hostfile -n 6 ./program
hostfile文件格式如下:
node1:4 #<node name>:<number of cores>
node2:4
远程节点访问协议选择:MPICH2默认使用ssh,也可选择使用rsh,fork,slurm等,利用-launcher选项进行设置:
$ mpiexec -launcher rsh -f hostfile -n 6 ./program
2.3.4.1编译MPI程序
$ source /public/software/profile.d/mvapich2-intel.sh
$ mpicc -o hello hello.c
$ mpif90 -o hello hello.f90
MVAPICH2编译C、C++、Fortran77和Fortran90的编译器分别为mpicc,mpicxx,mpif70和mpif90。
MVAPICH2提供了两种进程管理器:mpirun_rsh/mpispawn方式和mpiexec/Hydra方式。其中mpirun_rsh/mpispawn方式启动速度更快,支持集群规模更大, 但容易出现任务意外终止后计算节点存在僵尸进程的情况发生。虽然官方推荐使用 mpirun_rsh 方式,但曙光HPC 推荐使用mpiexec/Hydra 方式。 下面分别介绍:
1. mpirun_rsh 命令
$ mpirun_rsh -rsh -np 4 -hostfile hosts [ENV=value] ./program
Ÿ -rsh或-ssh:指定使用rsh或ssh通信(默认ssh)
Ÿ np:进程数,hostfile文件格式与MPICH2相同(-np和-hostfile是必备选项,不可缺少)
Ÿ ENV=value设置运行环境变量,如网络选择,进程绑定等,见下文。
2. Hydra 方式
mpiexe.hydra -launcher ssh -f hosts -n 4 [-env ENV value]./program
Ÿ -launcher ssh/rsh:指定启动远程任务的方式,默认ssh
Ÿ -f hosts:格式同MPICH2相同,<node name>:<proc num>
Ÿ -n 4:指定进程数
Ÿ -env ENV=value:设置运行环境变量
IntelMPI提供了非常完整的MPI编译器,如下表所示:
icc -ldl -I/public/software/intel/impi/4.1.0.024/intel64/include -L/public/software/intel/impi/4.1.0.024/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /public/software/intel/impi/4.1.0.024/intel64/lib -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/4.1 -lmpi -lmpigf -lmpigi -lrt -lpthread
编译示例:
$ mpiicc -o hello hello.c
2.3.5.2运行MPI程序
Ÿ mpirun是简化的启动MPI进程方式,相当于执行mpdboot+mpiexec+mpdallexit
Ÿ $ mpirun -r ssh -f mpd.hosts -machinefile mpd.hosts -np 16 -env I_MPI_DEVICE rdma ./program
Ÿ 选项顺序
Ÿ (1) [mpdboot options -r ssh -f mpd.hosts (-n在mpirun中不能用)]
Ÿ (2) [mpiexec global options -machinefile mpd.hosts]
Ÿ (3) [mpiexec local options -np 16 -env ...]
Hosts 文件格式:
格式同MPICH2相同,<node name>:<proc num>
在PBS系统中,用户使用qsub命令提交用户程序。
qsub xxx.pbs
用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,提交格式如下:
注释,以“#”开头
PBS指令,以“#PBS”开头
示例OpenMPI脚本:openmpi.pbs
#PBS -N openmpi
#PBS -l nodes=1:ppn=8
#PBS -j oe
#PBS -l walltime=2:00:00
cd $PBS_O_WORKDIR
echo my job id is $PBS_JOBID | tee openmpi.log
echo run nodes is following: | tee -a openmpi.log
cat $PBS_NODEFILE | tee -a openmpi.log
echo begin time is `date` | tee -a openmpi.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`
mpirun -np $NP -hostfile $PBS_NODEFILE --mca orte_rsh_agent ssh --mca btl self,openib,sm ./program 2>&1 | tee -a openmpi.log
echo end time is `date` | tee -a openmpi.log
注意:算例规模的大小合理估算所需的walltime和Mem,把其写进作业脚本里,这样有助于更快、更有效地分配资源;
qmgr -c 'p s'
以gpu节点为例:
# Create and define queue gpu
create queue gpu
set queue gpu queue_type = Execution
set queue gpu resources_max.nodect = 8
set queue gpu resources_max.walltime = 120:00:00
set queue gpu resources_default.neednodes = gpu
set queue gpu max_user_run = 2
set queue gpu enabled = True
set queue gpu started = True
qmgr -c“set queue gpu acl_users += guest”
添加可使用该队列的用户guest
pestat |more
node state load pmem ncpu mem resi usrs tasks jobids/users
a110 busy* 12.00 12001 12 12001 4605 4/3 12 8904 hcding
a111 busy* 12.00 12001 12 12001 4842 3/3 12 8904 hcding
a112 free 0.00 12001 12 12001 1182 1/1 0
a113 busy* 12.00 12001 12 12001 4753 2/2 12 8904 hcding
a114 free 0.00 12001 12 12001 962 2/2 0
a115 busy* 12.00 12001 12 12001 1473 4/3 12 9537 john
a116 free 0.00 12001 12 12001 1156 3/3 0
a117 busy* 12.00 12001 12 12001 5090 3/3 12 8904 hcding
a118 free 0.00 12001 12 12001 2606 2/2 0
a119 busy* 12.12 12001 12 12001 1674 4/3 12 9410 wxxu
a120 busy* 12.00 12001 12 12001 1616 4/4 12 9410 wxxu
a121 excl 11.91 12001 12 12001 2034 5/4 12 9503 john
a122 free 0.07 12001 24 12001 2181 1/1 0
a123 busy* 12.00 12001 12 12001 1625 3/3 12 9410 wxxu
a124 free 0.01 12001 12 12001 2389 2/2 0
a125 busy* 12.00 12001 12 12001 1652 4/4 12 9410 wxxu
a126 free 0.00 12001 12 12001 2442 1/1 0
a127 excl 11.39* 12001 12 12001 1898 3/3 12 9503 john
a128 free 0.00 12001 12 12001 1032 1/1 0
a129 excl 11.68 12001 12 12001 1712 3/3 12 9503 john
a130 free 1.75* 12001 12 12001 3264 5/3 3 8216 wxxu 9187 wxxu 9533 wxxu
…………………………………….
…………………………………….
excl:所有CPU资源已被占用;
busy:CPU已接近满负荷运行;
free:全部或部分CPU空闲;
offl:管理员手动指定离线状态;
qstat -an |more
如下输出:
mgmt:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----
7010.mgmt ymei itcs ga88_remd1_zj 22516 8 96 -- 720:0 R 231:2
a330/11+a330/10+a330/9+a330/8+a330/7+a330/6+a330/5+a330/4+a330/3+a330/2
+a330/1+a330/0+a331/11+a331/10+a331/9+a331/8+a331/7+a331/6+a331/5+a331/4
+a331/3+a331/2+a331/1+a331/0+a332/11+a332/10+a332/9+a332/8+a332/7+a332/6
+a332/5+a332/4+a332/3+a332/2+a332/1+a332/0+a334/11+a334/10+a334/9+a334/8
+a334/7+a334/6+a334/5+a334/4+a334/3+a334/2+a334/1+a334/0+a335/11+a335/10
+a335/9+a335/8+a335/7+a335/6+a335/5+a335/4+a335/3+a335/2+a335/1+a335/0
+a337/11+a337/10+a337/9+a337/8+a337/7+a337/6+a337/5+a337/4+a337/3+a337/2
+a337/1+a337/0+a339/11+a339/10+a339/9+a339/8+a339/7+a339/6+a339/5+a339/4
+a339/3+a339/2+a339/1+a339/0+a435/11+a435/10+a435/9+a435/8+a435/7+a435/6
+a435/5+a435/4+a435/3+a435/2+a435/1+a435/0
查询作业命令 qstat [参数],其中参数可为:
-q :列出系统队列信息
-B :列出PBS服务器的相关信息
-Q:列出队列的一些限制信息
-an:列出队列中的所有作业及其分配的节点
-r :列出正在运行的作业
-f jobid :列出指定作业的信息
-Qf queue:列出指定队列的所有信息
作业删除命令:qdel 作业号
1、非root用户只能查看、删除自己提交的作业;
2 、强制删除作业 ,当某些作业由于节点死机无法删除时,可由root用户登录,使用qdel -p作业号来强制删除作业
3.6.6.1 串行作业
#!/bin/bash -x
#PBS -N serial
#PBS -l nodes=1:ppn=1
#PBS -l walltime=60:00:00
#PBS -j oe
#PBS -q serial
#define variables
echo "This jobs is "$PBS_JOBID@$PBS_QUEUE
cd ${PBS_O_WORKDIR}
sleep 100
hostname
#PBS -l nodes=1:ppn=1表示申请1个节点上的1颗CPU。
#PBS -q serial表示提交到集群上的serial队列。
3.6.6.2 并行作业
Ÿ openmpi
并行作业的脚本以cpi为例。示例OpenMPI脚本:openmpi.pbs
#PBS -N openmpi
#PBS -l nodes=1:ppn=8
#PBS -j oe
#PBS -l walltime=2:00:00
cd $PBS_O_WORKDIR
echo my job id is $PBS_JOBID | tee openmpi.log
echo run nodes is following: | tee -a openmpi.log
cat $PBS_NODEFILE | tee -a openmpi.log
echo begin time is `date` | tee -a openmpi.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`
mpirun -np $NP -hostfile $PBS_NODEFILE --mca orte_rsh_agent ssh --mca btl self,openib,sm ./program 2>&1 | tee -a openmpi.log
echo end time is `date` | tee -a openmpi.log
Ÿ mpich2
示例MPICH2脚本:mpich2.pbs
#PBS -N mpich2
#PBS -l nodes=1:ppn=8
#PBS -j oe
#PBS -l walltime=2:00:00
cd $PBS_O_WORKDIR
echo my job id is $PBS_JOBID | tee mpich2.log
echo run nodes is following: | tee -a mpich2.log
cat $PBS_NODEFILE | tee -a mpich2.log
echo begin time is `date` | tee -a mpich2.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`
mpiexec.hydra -n $NP -launcher ssh -f $PBS_NODEFILE ./program 2>&1 | tee -a mpich2.log
echo end time is `date` | tee -a mpich2.log
Ÿ mvapich2
MVAPICH2示例脚本:mvapich2.pbs
#PBS -N mvapich2
#PBS -l nodes=1:ppn=8
#PBS -j oe
#PBS -l walltime=2:00:00
cd $PBS_O_WORKDIR
echo my job id is $PBS_JOBID | tee mvapich2.log
echo run nodes is following: | tee -a mvapich2.log
cat $PBS_NODEFILE | tee -a mvapich2.log
echo begin time is `date` | tee -a mvapich2.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`
mpiexec.hydra -n $NP -launcher ssh -f $PBS_NODEFILE cpi 2>&1 | tee -a mvapich2.log
echo end time is `date` | tee -a mvapich2.log
Ÿ intelmpi.pbs
IntelMPI示例脚本:intelmpi.pbs
#PBS -N intelmpi
#PBS -l nodes=1:ppn=8
#PBS -j oe
#PBS -l walltime=2:00:00
cd $PBS_O_WORKDIR
echo my job id is $PBS_JOBID | tee intelmpi.log
echo run nodes is following: | tee -a intelmpi.log
cat $PBS_NODEFILE | tee -a intelmpi.log
echo begin time is `date` | tee -a intelmpi.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`
qstat -f1 $PBS_JOBID | grep exec_host | awk '{print $3}' | tr '+/' '\n ' | awk -v prog="cpi " -v net="" 'NR==1 {node=$1; count=1; core[count]=$2; next}; $1==node {count++; core[count]=$2}; $1!=node {printf("-n %d -host %s -env %s -env I_MPI_PIN_PROCESSOR_LIST ",count,node,net); for(i=1;i<count;i++) printf("%d,",core[i]); printf("%d %s\n",core[count],prog); node=$1; count=1; core[count]=$2}; END {printf("-n %d -host %s -env %s -env I_MPI_PIN_PROCESSOR_LIST ",count,node,net); for(i=1;i<count;i++) printf("%d,",core[i]); printf("%d %s\n",core[count],prog)}' >rankfile.${id}
mpirun -r ssh -f $PBS_NODEFILE -configfile rankfile.$id 2>&1 | tee -a intelmpi.log
echo end time is `date` | tee -a intelmpi.log
作在WEB浏览器地址栏中输入以下URL: http://登录IP:6080/
出现登录界面后,使用你的用户名账户登入,在Gridview的“作业调度”界面就可以进行相关查询和操作。曙光Gridview集群管理软件的使用可以参考Gridview用户手册。。
Gridview产品的标准配置中包括了basic类型的mpi、serial、general三个基本应用portal,在完成了安装之后的集群系统中即可直接使用。如果您选购的产品中包括了其他的Web Portal,具体使用参见相关的系统说明;如果您需要增加新的Web Portal,请访问曙光官方网站:www.sugon.com或拨打免费服务电话800-810-0466/400-810-0466。
2.5.2.1serial应用portal
点击“作业提交”->basic类型“基础模板”打开作业提交页面,选择相应的Portal模板,将在浏览器中打开相应的页面,如下图所示:
serial是GridviewClusportal最基本的portal,可以支持串行程序和openmp程序的作业提交运行,并支持vnc的图形作业,以及clusnap的自动checkpoint功能,此portal适用串行程序和openmp程序,故支持的节点数只能为1。
相关选项、状态说明:
CPU Time:如果部署了ClusQuota集群资源配额计费系统,将显示您目前可用的机时配额,计量单位为“CPU*Hours”。例如,系统显示目前可用配额为120 CPU*Hours,表明最多可以用12个CPU并行运算10小时。本次计算任务结束之后,将按照“CPU并行数*实际运行时间”扣除相应的机时配额。队列状态的“Charge Rate”一栏表示它们在ClusQuota系统中的计费比率,例如,优先权高的工作队列其计费比率也相应要高一些。
Nnodes:本次计算任务需要使用多少个节点。本portal中只能选1
Cores/Node:本次计算任务每个节点需要使用多少CPU核。
Wall Time:本次计算任务预计将运行多长时间。根据系统的调度策略,WallTime较短的任务将有机会优先运行;不过须注意,一旦WallTime时间到了而程序尚未运行结束,本次任务将被强行终止。因此请合理预估WallTime的长短。此外,如果部署了ClusQuota集群资源配额计费系统,本次任务申请的机时资源不允许超过您目前可用的机时配额。
Queue:本次计算任务将使用的工作队列。
Name:本次计算任务的名称。
WinScp File Manager:启动WinSCP程序上传/下载计算任务的输入输出文件。
Web File Manager:启动文件管理
Program:选择本次计算任务的可执行程序或命令。
Arguments:如果应用程序运行时需要提供自定义的参数,请在此输入。
Working DIR:本次计算任务的工作目录。
Output File:计算过程中的标准输出和标准错误输出信息,将被重定向保存为文件。
PBS Options:如果需要手动添加PBS作业的高级参数,可在此处设置。这类参数的行首必须包含“#PBS”关键字,将被加到PBS脚本文件的开始处。该选项默认无需设置。
Pre Commands:如果运行mpirun命令之前需要做前处理操作,可在此处设置相关命令参数,命令。
2.5.2.2MPI应用portal
点击“作业提交”->basic类型“基础模板”打开作业提交页面,选择相应的Portal模板,将在浏览器中打开相应的页面,mpi portal如下图所示:
MPI(Message Passing Interface)是并行程序使用最为广泛的程序设计标准,可以支持大规模多节点并行.目前发展的版本为MPI2.MPI的具体实现为openmpi、intelmpi、mvapich、mpich等。相关选项、状态说明:
CPU Time:如果部署了ClusQuota集群资源配额计费系统,将显示您目前可用的机时配额,计量单位为“CPU*Hours”。例如,系统显示目前可用配额为120 CPU*Hours,表明最多可以用12个CPU并行运算10小时。本次计算任务结束之后,将按照“CPU并行数*实际运行时间”扣除相应的机时配额。队列状态的“Charge Rate”一栏表示它们在ClusQuota系统中的计费比率,例如,优先权高的工作队列其计费比率也相应要高一些。
Nnodes:本次计算任务需要使用多少个节点。
Cores/Node:本次计算任务每个节点需要使用多少CPU核。
Wall Time:本次计算任务预计将运行多长时间。根据系统的调度策略,WallTime较短的任务将有机会优先运行;不过须注意,一旦WallTime时间到了而程序尚未运行结束,本次任务将被强行终止。因此请合理预估WallTime的长短。此外,如果部署了ClusQuota集群资源配额计费系统,本次任务申请的机时资源不允许超过您目前可用的机时配额。
Queue:本次计算任务将使用的工作队列。
MPI Type:选择MPI并行环境,如Open MPI或Intel MPI。
Remote Shell:多节点并行任务,MPI初始化并行环境时,节点之间的访问模式。建议采用默认的SSH模式。
Communication:节点连接方式,InfiniBand和TCP两种方式。建议采用默认的InfiniBand方式。
Other Paramasters:多节点并行任务,节点之间数据交换采用何种网络。如果勾选“Share Memory”选项,表示同一节点内的MPI进程采用共享内存方式进行数据交换;如果勾选“CPU Binding”选项,表示将MPI进程与固定的CPU核心绑定,防止进程漂移。开启这两个选项通常可以提高MPI程序的运行速度。
MPI Envfile:文件环境变量配置文件。用户可浏览集群,选择配置文件。
MPI Program:选择本次计算任务的可执行程序。本Portal安装后提供基本的MPI版本CPI可进行测试,用户也可浏览选择集群中的其他MPI程序。
Arguments:如果MPI应用程序运行时需要提供自定义的参数,请在此输入。
Working DIR:本次计算任务的工作目录。
Output File:计算过程中的标准输出和标准错误输出信息,将被重定向保存为文件。
MPI Options:如果需要手动添加MPI并行时的高级参数,可在此处设置,这些参数将被传递成为mpirun命令行参数的一部分。该选项默认无需设置。
PBS Options:如果需要手动添加PBS作业的高级参数,可在此处设置。这类参数的行首必须包含“#PBS”关键字,将被加到PBS脚本文件的开始处。该选项默认无需设置。
Pre Commands:如果运行mpirun命令之前需要做前处理操作,可在此处设置相关命令参数,命令行格式必须遵循bash脚本规范。该选项默认无需设置。
Post Commands:如果在mpirun命令运行结束之后需要做后处理操作,可在此处设置相关命令参数,命令行格式必须遵循bash脚本规范。该选项默认无需设置。进入作业管理à作业列表,查看或更改作业运行状态,查看计算结果。
点击“作业管理”->“作业列表”进入作业列表页面;页面提供了常用的状态视图、历史作业等跳转功能,作业查询和作业控制功能,如下图所示:
2.5.3.1查询作业
查询条件为“作业名”、“作业状态”、“作业所有者”,用户输入单个或者多个相应的查询条件后,单击查询按钮即可完成对作业的单一或组合查询,如下图所示:
按作业名查询为精确匹配查询。
作业状态有“传输”,“等待”,“排队”,“保留”,“运行”,“挂起”,“退出”,“完成”。按状态查询为精确匹配查询,其中“不限状态”是一个特殊的选项,表示不对作业状态做限制。
作业所有者
按作业所有者查询为模糊匹配查询。如果不设置任何查询条件,直接单击“确定”按钮,则查询出所有的作业。如果输入多个查询条件,则会查询同时满足这些条件的作业。查询到的作业以表格形式展现在页面主区域部分,默认只显示作业的部分属性,例如,将鼠标挪动
到“作业编号”一列,再单击该列上出现的下拉三角形即可对本例进行排序操作。
由于系统刷新间隔的影响,在页面上看到的属性“运行时间”的值和真实值最多有45s的误差。
2.5.3.2作业控制
作业控制包括保留、释放、挂起、恢复、重新运行和删除六种操作。先在作业列表页面中选择要控制的一个或多个作业,然后单击工具栏中的作业控制按钮,如下图所示,单击相应的控制作,即可完成对作业指定的操作。
目前支持的控制操作包括:
只能对排队状态的作业执行保留操作,操作成功后作业会进入保留状态。保留状态的作业不会被调度执行。
只能对保留状态的作业执行释放操作,释放成功后作业会进入排队状态。排队状态的作业在资源满足后会被调度执行。
只能对运行状态的作业执行挂起操作,操作成功后作业会进入挂起状态。挂起状态的作业会暂停执行,只能通过恢复操作来唤醒运行。
只能对挂起状态的作业执行恢复操作,操作成功后作业会进入运行状态。
重新运行作业
只能对运行状态的作业执行重新运行操作,操作成功后作业会重新运行。
VNC查看
如果作业是VNC作业会出现打开VNC的图标按钮,如下图所示,点击即可打开VNC的图形界面。
在作业管理页面的表格中选择要删除的一个或多个作业,单击工具栏中的“删除作业”按钮即可实现删除操作。
1.如果在某些大型作业的运行过程中发现无法删除作业,请以root身份登录到管理节点,进入/opt/gridview/pbs目录,应用命令./pbs_killjob.sh JOBID命令删除作业编号为JOBID的作业。由于该功能是强制删除作业且不能恢复,所以建议慎用该命令。
2.被唤醒的作业不计入作业总数中。
附录一——Linux常用命令
用户使用命令行所做的大部分工作是用来定位、列出、创建以及删除文件和目录,下面列举最为常用的这类命令及其解释,更为详细的用法请参见Linux有关书籍。
➢ ls [options] [directory]列出文件
常用的命令参数选项有-l,-a,-t等。ls代表list。
ls -la——给出当前目录下所有文件的一个长列表,包括以句点开头的隐藏文件。
ls -l *.doc——列出当前目录下以字母.doc结尾的所有文件。
ls -a——显示当前目录所有文件及目录。
ls -d——将目录像文件一样显示,而不显示该目录下的文件。
ls -R——列出所有子目录下的文件。
ls -t——将文件依建立时间之先后次序列出。
ls -ltr s*——列当前目录下任何名称是s开头的文件,愈新的文件排愈后。
➢ cd [directory]切换目录
cd代表change directory。
cd~——切换到用户家目录。
cd /tmp——切换到目录/tmp。
cd ..——切换到上一层目录
cd /——切换到系统根目录
cd /usr/bin——切换到/usr/bin目录。
➢ cat [textfile]显示文本文件内容
cat代表catenate。
cat /etc/passwd——显示文本文件passwd中的内容。
cat test.txt | more——逐页显示test.txt文件中的内容。
cat test.txt >>test1.txt——将test.txt的内容附加到test1.txt文件之后。
cat a.txt b.txt >readme.txt——将文件a.txt和b.txt合并成readme.txt文件。
➢ more [textfile]和less [textfile]逐屏显示文本文件内容
more命令和less命令都是用于要显示的内容会超过一个画面长度的情况。more命令让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面;而less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。二者都使用热键q退出。
more /etc/passwd——显示etc目录下文本文件passwd中的内容。
ls -al | more——以长格形式显示当前目录下的所有内容,显示满一个画面便暂停,可按空格键继续显示下一画面。按热键q退出。
less /etc/named.conf——显示etc目录下文本文件named.conf中的内容。
ls -al | less——以长格形式显示当前目录下的所有内容,用户可按上下键浏览。按热键q退出。
➢ head [files]和tail [files]查看文件前几行和后几行的内容
head和tail命令用于查看从文件头或文件尾开始的指定数量的行的内容。
head -10 /etc/passwd——显示/etc/passwd文件的前10行内容。
tail -10 /etc/passwd——显示/etc/passwd文件的倒数10行内容。
tail +10 /etc/passwd——显示/etc/passwd文件的从第10行开始到末尾的内容。
head -20 file | tail -10 /etc/passwd——结合head与tail命令,显示/etc/passwd文件的第11行到第20行的内容。
tail -f /usr/tmp/logs/daemon_log.txt——使用参数-f时,tail不会回传结束信号,除非我们去自行去中断它;相反地,它会一直不停地继续显示,直到发现文件自它最后一次被读取后,又被加入新的内容时。一般用于监视日志文件的动态更新,有实时监视的效果。本例用于显示/usr/tmp/logs/daemon_log.txt文件的动态更新。
➢ pwd显示用户目前所在的工作目录的绝对路径名称。
pwd代表print working directory
➢ mkdir [-p] [directory]创建目录
mkdir代表make directory。
mkdir mydir——在当前目录下建立mydir目录。
mkdir -p one/two/three——在当前目录下建立指定的嵌套子目录。
➢ rmdir [-p] [directory]删除目录
删除“空”的子目录。rmdir代表remove directory。
rmdir mydir——删除“空”的子目录mydir。
rmdir -p one/two/three——删除“空”的嵌套子目录one/two/three。
注意:选项“-p”表示可以递归删除多层子目录,但删除的目录须为空目录,且须具有对该目录的写入权限。
➢ cp [source] [target]复制文件
将一个文件、多个文件或目录复制到另一个地方。cp代表copy。
cp test1 test2——将文件test1复制成新文件test2。
cp test3 /home/bible/——将文件test3从当前目录复制到/home/bible/目录中。
cp -r dir1(目录)dir2(目录)——复制目录dir1为目录dir2。-r参数表示递归。
注意:cp命令默认将覆盖已存在的文件,加-i参数表示覆盖前将与用户交互。
➢ mv [source] [target]移动文件,文件改名
将文件及目录移到另一目录下,或更改文件及目录的名称。mv代表move。
mv afile bfile——将文件afile改名成新文件bfile。
mv afile /tmp——将文件afile从当前目录移动到/tmp/目录下。
mv afile ../——将文件afile移动到上层目录。
mv dir1 ../——将目录dir1移动到上层目录。
➢ rm [files]删除文件或目录
删除目录需要加-r选项,强制删除用-f。rm代表remove。
rm myfiles——删除myfiles文件。
rm *——删除当前目录下的所有未隐藏文件。
rm -f *.txt——强制删除所有以后缀名为txt文件。
rm -rf mydir——删除目录mydir以及其下的所有内容.
rm -ia*——删除当前目录下所有以字母a开头的文件,-i选项表示将与用户交互。
➢ ln [-s] [source] [target]建立链接
在文件和目录之间建立链接,参数-s为建立软链接(符号链接)。ln代表link。
ln -s /usr/share/doc doc——创建链接文件doc,并指向目录/usr/share/doc。
ln -s afile linkafile——为文件afile创建名为linkafile的软链接
ln afile bfile——为文件afile创建名为bfile的硬链接
ln /usr/share/test hard——创建一个硬链接文件hard,这时对于test文件对应的存储区域来说,又多了一个文件指向它。
➢ touch [options] [filename]新建一个文本文件
新建一个文本文件或修改文件的存取/修改的时间记录值。
touch *——将当前目录下的文件时间修改为系统的当前时间。
touch -d 20100101 test——将test文件的日期改为2010年1月1日。
touch abc——若abc文件存在,则修改为系统的当前时间;若不存在,则生成一个为当前时间的空文件。
➢ file [filename]查看filename文件的类型
➢ grep 'string' [file]在文件中搜索匹配的字符串位置(所在行)并输出到屏幕
grep代表(global regular expression print,全局正则表达式打印)。
grep bible /etc/exports——查找文件/etc/exports中包含字符串bible的所有行。
grep -v ^# /etc/apache2/httpd.conf——在主Apache配置文件中,查找所有非注释行。
tail -100 /var/log/apache/access.log | grep 404——在Web服务器日志的后100行中查找包含字符串404的行,404代表Web服务器的“文件没找到”代码。
tail -100 /var/log/apache/access.log | grep –v googlebot——在Web服务器的后100行中,查看没有被Google搜索引擎访问的行。
rpm -qa | grep httpd——搜索已安装的rpm包中含有httpd字符串的文件名。
➢ find name [filename]和locate [file]查找文件或目录
find用来查找文件或目录。locate用于快速查找定位文件,但只能搜索文件名。
find ./ -name httpd.conf——搜索当前目录下名为httpd.conf的文件并显示结果。
find /etc -name httpd.conf——搜索/etc目录下名为httpd.conf的文件并显示结果。
find . | grep page——在当前目录及其子目录中,查找文件名包含字符串page的文件。
locate traceroute——在系统任何地方查找文件名包含字符串traceroute的文件。
➢ whereis [options]查找程序的源、二进制文件或手册
whereis命令在指定的目录中查找程序的源、二进制文件或手册。
whereis passwd——将和passwd文件相关的文件都查找出来。
whereis -b passwd——只将二进制文件查找出来。
➢ man [command]查看command命令的说明文档
man代表manual page
➢ [command] -h或-help, --h, --help
查看command命令的说明文档
➢ info [command]查看command命令的说明文档
info代表information
➢ whatis [command]在whatis资料库(手册)中搜寻指定命令的简短描述。
➢ tar [options] [filename]打包命令。
tar代表tape archive。它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux/Unix上常将打包命令tar与压缩gzip联合使用。Tar不仅可以打包文件,也可以将硬盘数据备份。tar命令常用参数:
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩或解压
-j:调用bzip2压缩命令进行压缩或解压
-t:查看压缩文件的内容
-x:解开tar文件
-p:使用原文件的原来属性(属性不会依据使用者而变)
tar -cvf test.tar *——将所有文件打包成test.tar,扩展名.tar需自行加上。
tar -zcvf test.tar.gz *——将所有文件打包并调用gzip命令压缩成为test.tar.gz。
tar -tf test.tar——查看test.tar文件中包括了哪些文件。
tar -xvf test.tar——将test.tar文件解开。
tar -zxvf foo.tar.gz——将foo.tar.gz解压缩。
tar -jxvf foo.tar.bz2——将foo.tar.bz2解压缩。
tar -cvf /tmp/etc.tar /etc——将整个/etc目录下的文件全部打包成为/tmp/etc.tar。
tar -zcvf /tmp/etc.tar.gz /etc——将整个/etc目录下的文件全部打包并调用用gzip命令压缩成为/tmp/etc.tar.gz。
tar -zxvpf /tmp/etc.tar.gz /etc——将/etc/内的所有文件备份下来,并且保存其权限。参数-p非常重要,尤其是当需要保留原文件的属性时!
➢ gzip [options] [filename]压缩和解压缩命令。
通过压缩减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip和gunzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令。gzip代表GNU zip。GNU是Gnu is Not Unix的缩写,GNU
Project是自由软件基金会(Free Software Foundation)的一部分,它对Linux下的许多编程工具负责。
各选项的含义:
-c:将压缩结果写入到标准输出上,原文件保持不变。缺省时gzip将原文件压缩为.gz文件,并删除原文件。
-r:递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-d:解压缩指定文件。
-t:测试压缩文件的完整性。
-v:对每一个压缩和解压的文件,显示文件名和压缩比。
gzip usr.tar——压缩一个文件usr.tar,此时压缩文件的扩展名为.tar.gz。
gzip -v /mnt/lgx/a1.doc——压缩文件/mnt/lgx/a1.doc,此时压缩文件的扩展名为.gz。
gzip -d/mnt/lgx/a1.doc.gz——解压缩文件/mnt/lgx/a1.doc.gz
➢ date显示/修改当前的系统时间
date——查看系统当前时间。
date 121010232009.10——将时间更改为12月10日10点23分10秒2009年[月日时分年.秒]。
➢ cal显示日历
cal——显示当月日历。
cal 7 2007——显示2007年7月份的日历。
cal 2010——显示2010年全年的日历。
➢ hwclock显示当前的硬件时钟
hwclock --show——查看硬件当前时钟。
hwclock --set --date="01/17/2010 13:26:00"——设置硬件时钟,格式hwclock --set --date="月/日/年时:分:秒"。
hwclock --hctosys——硬件时钟与系统时间同步。--hctosys表示Hardware Clock to SYStem clock。
hwclock --systohc——系统时间和硬件时钟同步。
➢ ntpdate同步网络时钟
ntpdate 210.72.145.44——与ntp时间服务器进行时间同步。210.72.145.44是中国国家授时中心的官方服务器。(需要安装ntp的软件包)。
➢ dmesg显示系统开机信息命令
dmesg代表diagnostic message。显示系统诊断信息、操作系统版本号、物理内存的大小以及其它信息。
➢ df用于查看文件系统的各个分区的占用情况。df代表disk free。
df -hl——查看磁盘剩余空间信息。
df -T——显示分区类型。
➢ fdisk磁盘分区工具
fdisk -l——显示所有硬盘的分区情况。
➢ du [options] [directory or filename…]显示指定的目录或文件所占用的磁盘空间。du代表disk usage
➢ free查看系统内存,虚拟内存(交换空间)的大小占用情况
➢ who或w查看当前系统中有哪些用户登录
who——显示登录的用户名、登录终端和登录时间。
who -uH——带有标题栏的登录用户的详情,其中–u选项指定显示用户空闲时间。
➢ ifconfig显示和设置网络设备
ifconfig eth0 192.168.0.1——将第一块网卡的IP地址设置为192.168.0.1。
ifconfig eth0 down——关闭第一块网卡。
ifconfig eth0 up——启用第一块网卡。
ifconfig eth0 netmask 255.255.255.0——将第一块网卡的子网掩码设置为255.255.255.0。
ifconfig eth0 192.168.0.1 netmask 255.255.255.0——同时设置IP地址和子网掩码。
ifconfig eth0 -broadcast 192.168.0.255——将第一块网卡的广播地址设置为192.168.0.255。
➢ route显示和设置路由
route add 0.0.0.0 gw网关地址——增加一个默认路由。
route del 0.0.0.0 gw网关地址——删除一个默认路由。
route——显示当前路由表。
➢ ping[options][主机名/IP地址],检测是否能够与远端机器建立网络通讯连接
➢ netstat [options]查看网络状态
netstat -i——interface,显示网络界面信息表单。
netstat -s——statistice,显示网络工作信息统计表。
netstat -t——tcp,显示TCP传输协议的连接状态。
netstat -r——route,显示路由表。
➢ traceroute [远程主机IP地址或域名]跟踪路由
➢ ftp文件传输
➢ telnet [主机名/IP地址]登录到远程计算机
➢ finger查询远程计算机(通常是运行Linux/UNIX的计算机)上用户的详细信息。
RPM的全名是Red Hat Package Manager。利用RPM命令,可以安装、删除、升级管理软件,支持在线安装和升级软件。通过RPM包管理可以知道软件包包含哪些文件,也可以查询系统中的某个文件属于哪个软件包,可以查询系统中的软件包是否安装及安装的版本。具体用法请参见Linux相关书籍。下面列举一些rpm的基本用法。
➢ 我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包是做什么的,可以用这条命令查看:
rpm -qpi strace-4.5.18-10.13.x86_64.rpm
系统将会列出这个软件包的详细资料。
➢ 我们可以用下面这条命令查看软件包将会在系统里安装哪些文件:
rpm -qpl strace-4.5.18-10.13.x86_64.rpm
➢ 安装该软件包:
rpm -ivh strace-4.5.18-10.13.x86_64.rpm
➢ 如果系统已经安装该软件包的低版本,可以用下面的命令进行升级安装:
rpm -Uvh strace-4.5.18-10.13.x86_64.rpm
安装某个软件时,RPM会自动处理包的依赖关系,如果不想进行依赖检查,可以给rpm加上--nodeps参数,想要强制安装可以加上--force参数。
➢ 卸载某个安装过的软件,只需执行rpm-e <文件名>命令即可。
rpm -e strace
➢ 如果不小心误删了某些包的系统文件,可以用下来命令查看有哪些文件损坏,以便进行修复安装。
rpm -Va
➢ 下面这条命令行可以帮助我们快速判定某个文件是属于哪个软件包:
rpm -qf <文件名>
➢ 如果想查看当前系统已经安装了哪些rpm包,可以执行:
rpm -qa
也可以与grep联用,进行查找操作:
rpm -qa | grep strace
在Linux下编写文本或语言程序,首先必须选择一种文本编辑器。VIM编辑器是工作在字符模式下的高效率文本编辑器,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。
在命令行里输入vim即可调用VIM编辑器:
vim——调用vim,可以进行编辑工作,编辑完成后可以保存到新文件;
vim foo.txt­­­——如果文件已经存在,则打开编辑,如果文件不存在,则新建编辑;
VIM有几种基本工作模式,在VIM里头执行:help mode可以看到VIM的所有模式,主要有如下几种。
➢ Normal mode 即通常所谓的命令模式,在此模式使用a、i、A、I、o、O等进入Insert mode。
➢ Insert mode 即通常所谓的编辑模式,在此模式使用ESC进入Normal mode或者Ctrl-o临时进入Normal mode。
➢ Command-line mode 命令行模式,在Normal mode下按冒号进入,按ESC取消执行命令或者回车执行命令,然后回到Normal mode。
➢ Visual mode 即选择模式(注意跟用鼠标选择不同),用v,V,C-v或C-q进入
➢ Select mode 鼠标选择
➢ Replace mode 在Normal mode下按R进入,按ESC返回Normal mode,相当于Windows下命令行中按Insert键进入的覆盖模式
从VI/VIM 中退出 :按ESC确认返回到Normal mode,然后
➢ :wq 保存并退出
➢ :q! 不保存并退出
➢ :x 退出,如果文件更改则保存
➢ ZZ 退出,如果文件更改则保存(按住Shift,再按两次z)
VIM的命令是非常具有美感的,下面是几个例子:
➢ i 在光标前插入;I 在行首插入
➢ a 在光标后插入;A 在行末插入
➢ o 在下一行插入;O 在上一行插入
➢ x 删除当前字符;X 删除前一个字符
类似的还有b,B,ge,gE,w,W,e,E,f,F,t,T,这些命令都可以用:help cmdname查到帮助。
➢ dd 删除一行
➢ yy 拷贝一行
➢ h j k l左下上右移动光标
➢ Ctrl-w h,Ctrl-w j,Ctrl-w k,Ctrl-w l切换到左下上右窗口
VI/VIM的命令大多都可以带一个数字前缀或者一个数字范围,比如:
➢ 5dd 从当前行开始删除5行
➢ 5yy 从当前行开始拷贝5行
➢ 1,3d 删除1至3行
➢ 1,3y 拷贝1至3行 (.代表当前行,$代表最后一行)
VIM的功能非常强大,想进一步了解和学习VIM,可以参考VIM相关文档。
useradd添加用户
userdel删除用户
passwd为用户设置密码
usermod修改用户的登录名、用户的家目录等
id查看用户的UID、GID及所归属的用户组
pwck校验用户配置文件/etc/passwd和/etc/shadow文件内容是否合法或完整
chfn更改用户信息工具。可以留下真实的姓名、办公室、电话等资料。
su用户切换工具。表示substitute user
sudo通过另一个用户来执行命令(execute a command as another user)
finger查看用户信息工具
groupadd添加用户组
groupdel删除用户组
groupmod修改用户组信息
groups显示用户所属的组
grpck校验组账号文件(/etc/group)和影子文件(/etc/gshadow)的一致性和正确性。
➢ [command]<inputfile输入重定向
输入重定向。输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。
➢ [command]>outputfile输出重定向
输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。
ls -lR >dirtree.list——创建一个包含目录树列表的文件。
➢ [command] >>outputfile输出追加重定向
为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,shell提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。如果文件不存在,那么就创建它,如果存在,那么就追加到文件后边。
➢ [command1] | [command2]把command1执行的结果作为输入送到command2中执行。
![]() |
踢足球的剪刀 · django多应用之间_51CTO博客 1 年前 |