文档库 最新最全的文档下载
当前位置:文档库 › pbs提交作业

pbs提交作业

如何如何使用使用pbs 提交作业

1 串行任务提交

用户通过qsub 命令来向系统提交任务,有两种方式提交:脚本方式和命令行方式。(一

般情况下,不允许root 用户使用qsub 命令提交作业)

1.1 脚本方式提交

用户将需要执行的程序或命令写入脚本中,再加入一些必要或者可选的语句,就可以通过脚本方式提交。脚本提交比较方便,用户可以用最简单的文字编辑器(例如vi )编写一个脚本,然后使用qsub 命令提交该脚本,pbs 会按照脚本内容执行相应的任务。脚本提交的不足之处就是需要用户执行任务前编写脚本。 脚本方式提交任务的一般格式为:qsub [script_name],script_name 是任务脚本的名称。

下面介绍pbs 任务脚本的编写方法。 pbs 任务脚本包括三部分:

shell 说明语句:用来说明用户使用的是哪种shell ,例如 #!/bin/sh 说明用户需要

使用Bourne shell ,如果用户没有指定,则默认为 Bourne shell pbs 指示语句:pbs 指示语句是用户用来请求任务运行时所需的资源或设置任务

的一些属性的。以#PBS 开头,如#PBS –N taskname 是用来设置任务名称的。pbs 指示语句是可选的,用户可以不用关心它如何写,系统会自动设置。

pbs 指示句的一个主要作用是请求任务执行时所需要的系统资源,如cpu 数

目,存储容量,运行时间,运行优先级等等。以脚本方式提交的任务的资源请求是通过pbs 指示语句,一般格式为 #PBS –l [选项=] [选项对应的值],如#PBS –l ncpus=5表示请求5个cpu 为之服务。系统资源如下表所示

资源 描述

举例 arch 所需要的系统结构,只用在资源块中 -l arch=linux cput 任务的所有进程拥有的最大cpu 执行时间 -l cput=1:00:00 file 任务能够创建的文件的大小 -l file=45mb nodes 主机的个数

-l nodes=2 ppn 每个主机的处理器个数 -l nodes=2:ppn=2 host

指定执行主机的名称

-l nodes=X:host 分配X 个主机名称 中含有host 的执行 节点

mem 任务的所有进程能够分配到的最大物理内存数 -l mem=100mb ncpus 请求的cpu 数

-l ncups=5 nice 任务运行时的nice 优先级值

-l nice=3 pcput 任务的任何一个进程拥有的最大cpu 执行时间 -l pcput=1:00:00 pmem 任务的任何一个进程能够分配到的最大物理内存数 -l pmem=45mb pvmem 任务的任何一个进程能够使用的虚拟内存的最大数 -l pvmem=100mb vmem 任务的所有并发进程能够使用的最大虚存数 -l vmem=100mb walltime

任务可以处于运行态的最大wall-clock 时间

-l walltime=1:00:00

注:表中最常用的几种资源是:nodes, ppn, walltime, ncpus, mem 。其它可以不用太关心。 举例:

#PBS -l nodes=1:ppn=6,mem=400mb //申请节点数为1、每个节点cpu 数为6,400mb 内存

任务(程序或命令):可以是用户程序(如C 程序),也可以是系统命令 下面是一个完整的任务脚本例子,脚本名为mytask :

1) #!/bin/sh //指明所用的shell 2) #PBS –N mytask //设置任务名称 3) #PBS -l walltime=1:00:00 //请求任务执行时间

4) #PBS -l nodes=2:ppn=2,mem=400mb //请求任务执行所需资源:两个节点、每

个节点两个cpu ,400mb 内存

5) #PBS -j oe //设置相关属性(文件合并) 6) date /t //系统命令(打印日期时间) 7) .\my_application //所要执行的任务(当前目录名为

// my_application 的任务) 8) date /t // 系统命令

第1行说明所用的shell ;第2至5行是pbs 指示语句,设置了任务的一些属性,并请求了资源;第6至8行是要执行的命令及任务。

编写完脚本后,使用qsub 命令提交脚本,在shell 下输入: qsub mytask 后敲回车。

系统会输出一个任务标识符任务标识符::sequence-number.servername ,如https://www.wendangku.net/doc/ea3672635.html,ode01。sequence-number 是任务编号,后面需要用这个号查看任务的执行状态,servername 是pbs server 的名称。

1.2 命令行方式提交

命令行方式提交不用写脚本,用户可以直接从命令行输入。输入的内容基本上和在脚本中输入的相同。其基本格式如下:

qsub //输入qsub 命令后回车

[directives] //pbs 指示语句(以#PBS 为前缀) [tasks] //任务或命令

ctrl-D //结束输入,提交任务

对于上面用脚本方式提交的任务,用命令行方式提交的格式如下: qsub #PBS –N mytask #PBS –l walltime=1:00:00 #PBS -l nodes=2:ppn=2,mem=400mb

#PBS -j oe date /t ./my_application

custom resources

用户自定义资源

date /t

qsub命令的常用选项有:

选项取值功能

-a date_time年月日时分秒指定任务可以开始执行的时间(精确到秒)-e path路径名指定错误报告文件的输出路径

-h 无使任务暂时阻塞,推迟执行

-J X-Y X,Y是向量作业下标执行一个作业向量

-j join oe:错误报告文件与输出文件

合并成一个输出文件

eo:错误报告文件和输出文件

合并成一个错误报告文件

将错误报告文件与输出文件合并

-l

resources_list

资源列表资源请求列表

-N name任务名称指定任务名称

-o path路径名指定输出文件路径

-p priority-1024到+1023之间的一个

值指定任务优先级(依赖于操作系统的调度策略)

-q destination队列名称或执行节点名称指定任务执行的队列或者执行节点

-r value布尔值n:不可重新执行

y:可重新执行

说明任务是否可以重新执行

注:以命令行方式提交任务时,这些命令选项都要以pbs指示语句的格式给出,即选项之前要加前缀#PBS。

2 任务状态查看

任务提交后,用户如果要知道任务的当前运行状态,可以通过qstat命令查询。qstat命令的常用选项有:

无选项:当qstat命令不带任何选项时,以默认方式显示任务信息,例如[yaliang@cnode03 mpi]$ qstat

Job id Name User Time Use S Queue

---------------- ---------------- ---------------- ------------ - -----

https://www.wendangku.net/doc/ea3672635.html,ode01 test yaliang 0 R small

其中,Job id是任务的标识符,Name是任务名称,User是任务所有者,Time Use是CPU使用时间,S是任务当前状态(本例中R表示正在运行),Queue表示任务所在队列。任务的状态列表如下:

状态(S) 描述

B 只用于任务向量,表示任务向量已经开始执行

E 任务在运行后退出

H 任务被服务器或用户或者管理员阻塞

Q 任务正在排队中,等待被调度运行

R 任务正在运行

S 任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源T 任务被转移到其它执行节点了

U 由于服务器繁忙,任务被挂起

W 任务在等待它所请求的执行时间的到来(qsub -a)

X 只用于子任务,表示子任务完成

再举一例,使用-a选项指定任务开始执行时间:

[yaliang@cnode03 mpi]$ qsub -a 2102 test

https://www.wendangku.net/doc/ea3672635.html,ode01

[yaliang@cnode03 mpi]$ qstat

Job id Name User Time Use S Queue

---------------- ---------------- ---------------- ----------- --- --------

https://www.wendangku.net/doc/ea3672635.html,ode01 test yaliang 0 W default

此时任务状态(S)显示W,表示任务正在等待执行时间的到来

-a:qstat –a列举出当前执行节点上所有任务的情况,比无选项时列举的项目更多,例如:

--其中常用的几项是:NDS表示请求的节点数目,Req’d Memory表示请求的内存大小,Req’d Time表示请求的cpu时间,S表示任务的当前状态,Elap Time表示任务已经运行的时间。由于本例中没有请求节点数目、内存大小以及cpu时间,所以均没有显示,而任务当前处于等待状态,所以Elap Time也没有显示。

-f:qstat –f sequence-number可以查询任务标识号为sequence-number的任务状态,这个任务标识号是在任务提交时系统自动赋予的。例如:

[yaliang@cnode03 mpi]$ qstat -f 572

Job Id: https://www.wendangku.net/doc/ea3672635.html,ode01

Job_Name = test

Job_Owner = yaliang@cnode03

job_state = W

queue = default

server = cnode01

Checkpoint = u

ctime = Fri Dec 5 21:06:34 2008

Error_Path = cnode03:/home/yaliang/mpi/test.e572

Execution_Time = Sat Dec 6 21:02:00 2008

Hold_Types = n

Join_Path = n

Keep_Files = n

Mail_Points = bae

Mail_Users = ltq.yaliang@https://www.wendangku.net/doc/ea3672635.html,

mtime = Fri Dec 5 21:06:54 2008

Output_Path = cnode03:/home/yaliang/mpi/test.o572

Priority = 0

qtime = Fri Dec 5 21:06:34 2008

Rerunable = True

Resource_List.cput = 01:00:00

Resource_List.nodect = 1

Resource_List.nodes = 1

Variable_List = PBS_O_HOME=/home/yaliang,PBS_O_LANG=en_US.UTF-8, PBS_O_LOGNAME=yaliang,

PBS_O_PATH=/usr/local/Fluent.Inc/bin:/usr/local/matlab704/bin:/opt/int

el/fce/10.0.023/bin:/opt/intel/idbe/10.0.023/bin:/opt/intel/cce/10.0.02

3/bin:/usr/local/mpich2-1.0.7/bin:/usr/java/jdk1.5.0_03/bin:/usr/java/j

dk1.5.0_03/jre/bin:/usr/local/TSCMSS:/usr/kerberos/bin:/usr/local/bin:/

bin:/usr/bin:/usr/X11R6/bin:.:/home/yaliang/bin,

PBS_O_MAIL=/var/spool/mail/yaliang,PBS_O_SHELL=/bin/bash,

PBS_O_HOST=cnode03,PBS_O_WORKDIR=/home/yaliang/mpi,PBS_O_QUEUE=defa ult

comment = Not Running: Queue not an execution queue.

-u:qstat –u user1可以查询用户user1提交的所有任务的状态。例如:

注:需要注意的一点是,当任务已经完成后,qstat命令就不能再查询任务的状态了。这时可以使用“tracejob sequence-number”命令来查看任务的历史信息。

任务的错误报告以及输出结果都保存到指定的路径了,如果没有指定,则保存在用户根目录下面,即/home/user1/。

错误报告文件的文件名格式为:taskname.esequence-number,例如:mytask.e239

输出文件的文件名格式为:taskname.osequence-number,例如:mytask.o239

在这两个文件中可以查看你的程序的执行结果或是错误执行结果(如果有错误的话)。3:任务的删除

可以删除一个正在执行或是处于等待队列中的任务/作业。删除任务使用qdel命令。

格式如下:

qdel sequence-number// sequence-number是任务编号,可以使用qstat查询

使用pbs来进行作业提交的详细过程描述

示例一::使用pbs来提交mpi并行程序

示例一

比如我要提交一个计算π的mpi程序。程序的源文件为mpi.c

我写一个pbs脚本test如下:

#!/bin/sh

#PBS -N test

#PBS -M ltq.yaliang@https://www.wendangku.net/doc/ea3672635.html,

#PBS -m bae

#PBS -l nodes=2:ppn=2

cd /home/yaliang/mpi //程序所在的路径

mpdboot -n 10 -f host

mpicc -o mpi mpi.c

mpiexec –np 4 -machinefile $PBS_NODEFILE ./mpi

其中host文件内容如下:(对于经常进行mpi并行计算的专业人员来说,这里的介绍是多余的,你们比我对mpi的了解要深刻的多^_^)

cnode01

cnode02

cnode03

cnode04

cnode05

cnode06

cnode07

cnode08

cnode09

cnode10

脚本写完之后就可以提交了:

qsub test

任务执行完后,就可以到相应的目录下查看作业的执行结果。test.osequence-number为执行结果文件,test.esequence-number为错误输出文件。

示例二::使用pbs来提交需要图形界面进行交互的作业

示例二

见文档《PBS方式提交图形化交互式Fluent&Ansys&Matlab任务的方法.doc》

希望大家能够积极配合我们的工作,有问题及时向反馈,谢谢!

相关文档