我希望能够通过脚本轻松更改提交给 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
提交。
有什么解决方案吗?
最佳答案
@dbeer 的回答让我有了更多的了解。我的问题的解决方案如下:
#PBS
args 被命令行覆盖。在这种情况下,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
关于bash - 通过命令行参数在脚本中设置 PBS/Torque/qsub 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301779/