我在高性能计算机上运行程序,通常使用不同的参数作为输入。这些参数通过参数文件提供给程序,即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脚本的解决方案,该脚本从参数文件中读取数据,然后创建作业脚本并运行它?或者有更简单的方法吗?
答案 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
后缀。