通过命令行参数在脚本中设置 PBS/Torque/qsub 参数
Setting PBS/Torque/qsub parameters in script via command line arguments
我希望能够通过脚本轻松更改提交给 qsub
的 nodes
、ppn
等数量。也就是说,我想要 运行 像这样的东西:
qsub script.sh --name=test_job --nodes=2 --ppn=2 --arg1=2
使用如下脚本:
#/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}
所以,我希望能够传递既能改变 PBS 环境又能改变可执行文件本身的参数。
我试过使用 qsub
的 -v
参数:
qsub script.sh -v NAME=test_job,NODES=16,PPN=16,ARG1=2
但是提交的作业名称为 script.sh
和 1 node
, 1 ppn
.
有什么解决方案吗?
在 Torque 中,当在命令行上指定匹配参数时,所有 #PBS 参数都会被覆盖。例如,如果您的脚本具有:
#PBS -l nodes=2
您可以提交:
qsub script.sh -l nodes=4
并且命令行将优先于脚本。文档有 complete list 个命令行参数。
@dbeer 的回答让我有了更多的了解。我的问题解决方法如下:
#PBS
参数被命令行覆盖。在这种情况下,PBS 的参数和脚本本身必须分开。因此,与其尝试做类似的事情:
#PBS -l nodes=${NODES}:ppn=${PPN},walltime=${WALLTIME}
/some/command ${ARG1}
在脚本中 运行 喜欢
qsub script.sh -v NODES=2,PPN=2,WALLTIME=160:00:00,ARG1=2
这些都可以用 args 设置为 qsub
本身:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00
然后,任何需要传递给可执行文件的参数都可以通过 -v
参数传递给 qsub
:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00 -v ARGS1=2
我希望能够通过脚本轻松更改提交给 qsub
的 nodes
、ppn
等数量。也就是说,我想要 运行 像这样的东西:
qsub script.sh --name=test_job --nodes=2 --ppn=2 --arg1=2
使用如下脚本:
#/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}
所以,我希望能够传递既能改变 PBS 环境又能改变可执行文件本身的参数。
我试过使用 qsub
的 -v
参数:
qsub script.sh -v NAME=test_job,NODES=16,PPN=16,ARG1=2
但是提交的作业名称为 script.sh
和 1 node
, 1 ppn
.
有什么解决方案吗?
在 Torque 中,当在命令行上指定匹配参数时,所有 #PBS 参数都会被覆盖。例如,如果您的脚本具有:
#PBS -l nodes=2
您可以提交:
qsub script.sh -l nodes=4
并且命令行将优先于脚本。文档有 complete list 个命令行参数。
@dbeer 的回答让我有了更多的了解。我的问题解决方法如下:
#PBS
参数被命令行覆盖。在这种情况下,PBS 的参数和脚本本身必须分开。因此,与其尝试做类似的事情:
#PBS -l nodes=${NODES}:ppn=${PPN},walltime=${WALLTIME}
/some/command ${ARG1}
在脚本中 运行 喜欢
qsub script.sh -v NODES=2,PPN=2,WALLTIME=160:00:00,ARG1=2
这些都可以用 args 设置为 qsub
本身:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00
然后,任何需要传递给可执行文件的参数都可以通过 -v
参数传递给 qsub
:
qsub script.sh -l nodes=2:ppn=2,walltime=160:00:00 -v ARGS1=2