D-W*_*D-W 3 bash qsub pbs torque
我希望能够轻易改变多少nodes,ppn等我向qsub通过脚本。也就是说,我想运行这样的东西:
qsub script.sh --name=test_job --nodes=2 --ppn=2 --arg1=2
Run Code Online (Sandbox Code Playgroud)
使用如下脚本:
#/bin/bash
#PBS -N ${NAME}
#PBS -l nodes=${NODES}:ppn=${PPN},walltime=${WALLTIME}
#PBS -q ${QUEUE}
#PBS -m ${MAILOPTS}
#PBS -M ${EMAIL}
/some/command ${ARG1}
Run Code Online (Sandbox Code Playgroud)
因此,我希望能够传入既会改变 PBS 环境又会影响可执行文件本身的参数。
我试过使用以下-v参数qsub:
qsub script.sh -v NAME=test_job,NODES=16,PPN=16,ARG1=2
Run Code Online (Sandbox Code Playgroud)
但是提交的作业名称为script.sh1 node, 1 ppn。
关于解决这个问题的任何想法?
@dbeer 的回答给了我更多的见识。我的问题的解决方案如下:
#PBSargs 被命令行覆盖。在这种情况下,必须将 PBS 的 args 和脚本本身分开。因此,而不是尝试执行以下操作:
#PBS -l nodes=${NODES}:ppn=${PPN},walltime=${WALLTIME}
/some/command ${ARG1}
Run Code Online (Sandbox Code Playgroud)
在脚本内部并运行
qsub script.sh -v NODES=2,PPN=2,WALLTIME=160:00:00,ARG1=2
Run Code Online (Sandbox Code Playgroud)
这些都可以通过 args 设置为qsub自身:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00
Run Code Online (Sandbox Code Playgroud)
然后,任何需要传递给可执行文件的-v参数都可以通过参数传递给qsub:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00 -v ARGS1=2
Run Code Online (Sandbox Code Playgroud)