在 Cray 系统 运行 Linux 上,如何在自动 BASH 脚本中使用 aprun 提交多个 qsub 请求?

On Cray systems running Linux, how can I submit multiple qsub requests using aprun in an automated BASH script?

具体来说,Cray 需要在 qsub 请求中嵌入一个特殊命令 (aprun) 以在批处理节点上执行作业(Cray 默认为 运行 login/compute 没有 aprun 语法的节点)。当向 Cray Linux 超级计算机手动输入 qsub 请求时,定向语法为:

qsub <qsub parameters> -V
aprun -n #CPUS /executable.exe param1 param2 ...
Ctrl-D

用户在-V(表示在qsub语句中传递参数)和executable/parameter集之后提供'return'。 Ctrl-D 终止输入并执行 qsub/aprun 命令。

问题是,网上描述了多种在 BASH 脚本中输入 Ctrl-D(即 EOF)的方法,但是 none 他们在 qsub-embedded aprun 命令的上下文中工作。

我需要做的是在单个脚本中对多个 qsub/aprun 命令执行相同的语法。如何在 BASH 中编码?

解决语法是:

qsub <qsub parameters> -V <<EOF 
cd 
aprun -n #CPUS /executable.exe param1 param2 ... 
EOF 

qsub <qsub parameters> -V <<EOF 
cd 
aprun -n #CPUS /executable.exe param1 param2 ... 
EOF 

注意 <<EOF 的位置(<< 和 EOF 之间没有 space),cd 在一个新行上,然后是一个带有 [=13 的换行符=] 语法和集合中最后的 EOF 没有前导 <<,后跟换行符。

此语法将每个 qsub/aprun 命令执行到新的批处理节点作业提交中。脚本的输出将是请求的作业 ID 系列。