PBS脚本 Job Submission and Scheduling (PBS Scripts)

您所在的位置:网站首页 发邮件交作业的格式 PBS脚本 Job Submission and Scheduling (PBS Scripts)

PBS脚本 Job Submission and Scheduling (PBS Scripts)

2024-07-09 17:57| 来源: 网络整理| 查看: 265

参考:

MSI Job Submission and Scheduling (PBS Scripts)

CSDN博客 PBS常用命令和脚本

一 介绍

超算系统使用作业队列来管理 计算任务 的执行。将计算任务提交到作业队列后,它们将在队列中等待,直到有可用的适当的计算资源。

常见的排队系统为PBS(Portable Batch System.)。要将作业提交到PBS队列,用户可以创建PBS作业脚本(PBS job scripts)。 PBS作业脚本包含有关计算所需资源的信息,以及用于执行计算的命令。

 

二 PBS Script格式

PBS作业脚本是一个小型文本文件,其中包含有关作业所需资源的信息,包括时间,节点数和内存。 PBS脚本还包含 让超算系统执行的命令(commands needed to begin executing the desired computation)。比如linux系统命令(由超算的操作系统决定)。

PBS作业脚本示例:

1 #!/bin/bash -l 2 #PBS -l walltime=8:00:00,nodes=1:ppn=8,mem=10gb 3 #PBS -m abe 4 #PBS -M [email protected] 5 cd ~/program_directory 6 module load intel 7 module load ompi/intel 8 mpirun -np 8 program_name < inputfile > outputfile

 

PBS脚本的第一行定义了将使用哪种shell读取脚本(系统将如何读取文件)。建议使第一行#!/ bin / bash -l

用于PBS查询系统的命令以  #PBS 开头。

上面的示例脚本中的第二行包含PBS资源请求。该示例作业将需要8个小时,每个节点8个处理器核(ppn),以及10 GB的内存(mem)。资源请求必须包含适当的值;如果请求的时间,处理器或内存不适合硬件,则该作业将无法运行。

包含#PBS -m abe和#PBS -M [email protected]的两行都是与向用户发送邮件电子邮件有关的命令。这些行的第一行指示PBS系统在作业中止,开始或结束时发送消息电子邮件。第二个命令指定要使用的电子邮件地址。可以使用电子邮件中的信息来分析工作失败的原因。

样本PBS脚本的其余部分包含将要开始计算的命令。 PBS脚本应包含适当的更改目录命令以到达job执行位置(该脚本将在用户主目录中启动)。 PBS脚本还需要包含计算可能需要的任何软件模块的模块加载命令。 PBS脚本的最后几行包含用于执行计算的命令。在上面的示例中,最后一行包含执行命令,以启动程序,该程序使用MPI通信在8个处理器内核上运行。

三 提交Script

1. 提交脚本: qsub -q queuename scriptname

quename是提交到的队列的名称,scriptname是作业脚本的名称。 该命令的-q quename部分可以省略,在这种情况下,作业将提交到设置为默认队列的任何队列。 或者,可以将队列规范放在作业脚本中(请参见下文)。

   2. 查看提交的任务状态 qstat -u username

此命令将显示指定作业的状态以及相关的作业ID号。 命令qstat本身将显示系统上的所有作业。

  3. 取消提交的作业    qdel jobIDnumber应使用通过使用qstat命令确定的适当的作业ID号替换jobIDnumber。

四 PBS Script Commands

下表总结了可在PBS作业脚本中使用的一些命令。 前两个命令(解释器规范和资源请求)是必需的,而其他命令是可选的。 下面的每个PBS命令都应在PBS脚本内占一行。

PBS commandEffect #!/bin/bash -l 如何解读PBS文件,需要在第一行。Specifies how the PBS file should be read (by the bash interpreter). A statement like this is required to be the first line of a PBS script. #PBS -l walltime=2:00:00,nodes=1:ppn=8,pmem=2500mb 需要的资源。The resource request (required). The resource request must specify the job walltime (hours:minutes:seconds), number of nodes, and processor cores per node (ppn). It is recommended to specify either the required memory per processor core (pmem), or the required total memory (mem). #PBS -m abe 发送邮件。Makes the PBS system send message emails when the job aborts, begins, or ends. #PBS -M [email protected] 发送邮件。Specifies the email address that should be used when the PBS system sends message emails. #PBS -N jobname 设定这个任务的名字。Specifies a name for the job that will appear in the job queue. #PBS -o output_filename 输出文件。Directs the job standard output to be placed in the named file. #PBS -e error_filename 错误信息文件。Directs the job error output to be placed in the named file. #PBS -q queue_name 提交到的队列。Specifies that the job should be run in the named queue.

(1) PBS 作业脚本选项 (若无-C 选项,则每项前面加‘#PBS’) -a date_time : date_time 格式为:[[[[CC]YY]MM]DD]hhmm[.SS] 表示经过date_time 时间后作业才可以运行。 -c interval : 定义作业的检查点间隔,如果机器不支持检查点,则忽略此选项。 -C directive_prefix :在脚本文件中以directive_prefix 开头的行解释为qsub 的命 令选项。(若无此选项,则默认为’#PBS’ ) -e path :将标准错误信息重定向到path -I :以交互方式运行 -j join :将标准输出信息与标准错误信息合并到一个文件join 中去。 -k keep :定义在执行结点上保留标准输出和标准错误信息中的哪个文件。 keep 为o 表示保留前者,e 表示后者,oe 或eo 表示二者都保留, n 表示皆不保留。若忽略此选项,二者都不保留。 -l resource_list : 定义资源列表。以下为几个常用的资源种类。 cput=N : 请求N 秒的CPU 时间; N 也可以是hh:mm:ss 的形式。 mem=N[K|M|G][B|W]:请求N {kilo|mega|giga}{bytes|words} 大小的内存。 nodes=N:ppn=M :请求N 个结点,每个结点M 个处理器。 -m mail_options :mail_option 为a:作业abort 时给用户发信;为b:作业开始运行发信;为e: 作业结束运行时发信。若无此选项,默认为a。 -M user_list : 定义有关此作业的mail 发给哪些用户。 -N name : 作业名,限15 个字符,首字符为字母,无空格。 -o path : 重定向标准输出到path。 -p priority : 任务优先级,整数,[-1024,1023],若无定义则为0. -q destination : destination 有三种形式: queue , @server,queue@server。 -r y|n : 指明作业是否可运行,y 为可运行,n 为不可运行。 -S shell : 指明执行运行脚本所用的shell,须包含全路径。 -u user_list : 定义作业将在运行结点上以哪个用户名来运行。 -v variable_list : 定义export 到本作业的环境变量的扩展列表。 -V : 表明qsub 命令的所有环境变量都export 到此作业。 -W additional_attributes : 作业的其它属性。 -z : 指明qsub 命令提交作业后,不在终端显示作业号。

 

(2) 运行脚本同LINUX 下一般的运行脚本文件。 [注]:脚本文件中的mpirun_rsh 命令行中的节点列表文件要用环境变量表示 $PBS_NODEFILE,这个环境变量表示由pbs 自动分配给作业的节点列表; 节点数为命令行中指定的进程数。 格式如下: mpirun_rsh –np 进程数 –hostfile $PBS_NODEFILE 可执行程序名

五 举个栗子

pthread2.pbs(用来执行 pthread2.exe文件,并传递两个main函数参数: 10000000 线程数(此处为申请的系统内核数)

#!/bin/bash #PBS -N pthread #PBS -q qstudent #PBS -l nodes=1:ppn=16 #PBS -j oe cd $PBS_O_WORKDIR procs=$(cat $PBS_NODEFILE | wc -l) date +%s.%N #输出程序开始时间 #./pthread2 1000000000 $procs uname -a date +%s.%N #输出程序结束时间 #此空行不能省略

 

 

 提交命令 qsub pthread2.pbs  返回作业ID(此处为20246

查看作业,使用 qstat -R  ,C表示完成状态,Q表示在排队,R表示在运行   此处任务作业转台为C运行完了

作业结果保存在文件(name).o(job_id)中,此处为pthread.o20246

通过cat命令查看作业结果文件的内容。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3