我可以使用非交互式批处理作业和/或交互式批处理作业这两种方法向PBS提交作业。但是,我需要在函数中使用pbs命令。在另一个世界里,我需要这样的结构:
#!/bin/sh
pbs_setup () {
#PBS -l $1
#PBS -N $2
#PBS -q normal
#PBS -A $USER
#PBS -m ae
#PBS -M $USER"@gmail.com"
#PBS -q normal
#PBS -l nodes=1:ppn=8
#PBS
}
pbs_setup "walltime=6:00:00" "step3";
echo " "
echo "Job started
echo " "
echo "Job Ended 当我提交此作业时,它不工作。
实际上,我的最终目标是将job的命令与代码主体分开。因此,当HPC将改变时,我只编辑一个包含此功能的shell文件,而不是编辑所有的shell。
发布于 2015-06-03 10:58:36
作业脚本问题在于,#PBS行必须是脚本文件中的第一个非注释行。
在尝试执行相同的概念时,我使用了与您相同类型的函数,但将结果和实际命令cat到另一个文件中。也就是说,一个拱形脚本创建'job‘脚本。您可以将高性能计算需求放在一个单独的文件中,然后从创建脚本中对其进行source。
响应注释进行编辑:例如,指定开始作业的路径:
#PBS - d init_path
要用于作业的工作目录路径,PBS_O_INITDIR
或
#PBS -D root_path
要用于作业的根目录PBS_O_ROOTDIR。
或
#PBS -w working_path
如果未指定-w选项,则默认工作目录为当前目录。此选项设置环境变量PBS_O_WORKDIR。
因此,当您调用脚本将脚本提交到qsub时,默认的PBS_O_WORKDIR是您所在的当前目录。
因此,如果您为相对于实际脚本运行环境的路径设置了特定选项(d、D、w),您将能够使用您想要的路径。
有关这些选项和其他选项的默认值的详细信息,请查看您的应用程序的手册页。如果使用PBS系统的Torque版本,可从linux.die.net - qsub获得
发布于 2015-06-03 14:51:53
您可以创建自定义提交命令,该命令收集作业选项并将它们作为命令行参数发送到实际的qsub调用。
这是一个相当基本的例子。在实际使用中,我会添加更复杂的参数处理,以适应作业的类型,并与qsub接口更一致。此外,处理交互式作业还需要额外的工作。
#!/bin/bash walltime="${2:-06:00:00}“name="${3:-step3}”queue="normal“acct="$USER”mailevents="ae“mailaddress="$USER@gmail.com”resources="nodes=1:ppn=8“if $# -lt 1;然后回显“用法: submit.sh脚本[挂牌时间名称]”>退出1 fi script="$1“qsub -l "$walltime”-N "$name“-q "$queue”-A "$acct“\ -m "$mailevents”-M "$mailaddress“-l "$resources”echo
#!/bin/bash echo“”echo“”作业已开始“echo”“echo”“作业已结束”
这应该被用作
submit.sh script.sh 06:00:00 step3https://stackoverflow.com/questions/30609786
复制相似问题