为qsub

时间:2018-03-08 09:05:12

标签: qsub

我在高性能计算机上运行程序,通常使用不同的参数作为输入。这些参数通过参数文件提供给程序,即qsub文件看起来像

#!/bin/bash
#PBS -N <job-name>
#PBS -A <name>
#PBS -l select=1:ncpus=20:mpiprocs=20
#PBS -l walltime=80:00:00
#PBS -M <mail-address>
#PBS -m bea 
module load foss

cd $PBS_O_WORKDIR

mpirun main parameters.prm

# Append the job statistics to the std out file
qstat -f $PBS_JOBID

现在我通常会使用不同的parameter.prm文件同时多次或多次运行相同的程序。然而,它们都显示在具有相同名称的作业列表中,使列表中的作业与使用的参数之间的相关性变得困难(并非不可能)。
有没有办法动态更改作业列表中的程序名称,具体取决于使用的输入参数(最好是在main内)?或者是否有另一种更改作业名称的方法,而无需在每次运行时编辑作业文件

qsub job_script.pbs


将是一个创建shell脚本的解决方案,该脚本从参数文件中读取数据,然后创建作业脚本并运行它?或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

只需在命令行中使用-N选项:

qsub -N job1 job_script.pbs

然后,您可以使用for循环迭代*.prm个文件:

for prm in *.prm
do
  prmbase=$(basename $prm .prm)
  qsub -N $prmbase main $prm
done

这将按参数文件名命名每个作业,没有.prm后缀。