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

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

其中,用户在qsub之后(表示-V语句中参数的传递)和可执行文件/参数集之后提供“return”。qsub终止输入并执行Ctrl-D命令。
问题是,在bash脚本中输入qsub/aprun(简单地说就是Ctrl-D)的方法有很多,但是它们都不能在EOF-embeddedqsub命令的上下文中工作。
我需要做的是在一个脚本中对多个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的位置(在cd和eof之间没有空格),aprun在新行上,后面跟着一个带有EOF语法的换行符,集合中的最后一个<<没有前导qsub/aprun,后面跟着一个换行符。
此语法将在新的批处理节点作业提交中执行每个命令。脚本的输出将是请求的一系列作业ID。

08-27 17:43