首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递到slurm脚本

将参数传递到slurm脚本
EN

Stack Overflow用户
提问于 2019-06-18 21:18:20
回答 1查看 4.1K关注 0票数 2

我使用slurm脚本在集群上运行用于Matlab计算的数组。每个脚本都使用一个数组来循环matlab参数。

1)是否有可能创建一个shell脚本来循环另一个变量?

2)可以将变量传递给slurm脚本吗?

例如,我的slurm文件当前看起来像

代码语言:javascript
复制
#!/bin/bash
#SBATCH --array=1-128
...
matlab -nodesktop r "frame=[${SLURM_ARRAY_TASK_ID}]; filename=['Person24']; myfunction(frame, filename);";

我经常需要运行这个数组来处理许多不同的文件。这意味着我将提交作业(S批处理exampleScript.slurm),编辑文件,将'Person24‘更新为'Person25',然后重新提交作业。当我有大量文件要处理时,这是相当低效的。

我可以创建一个shell脚本将一个变量传递给slurm脚本吗?例如,如下所示:

Shell脚本(myshell.sh)

代码语言:javascript
复制
#!/bin/bash
for ((FNUM=24; FNUM<=30; FNUM+=1));
do
     sbatch myscript.slurm  >> SOMEHOW PASS ${FNUM} HERE (?)
done 

Slurm脚本(myscript.slurm)

代码语言:javascript
复制
#!/bin/bash
#SBATCH --array=1-128
...
matlab -nodesktop -nodisplay r "frame=[${SLURM_ARRAY_TASK_ID}]; filename=[${FNUM}]; myfunction(frame, filename);";

在这里,我可以使用类似sbatch myshell.sh之类的工具有效地提交所有的作业。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 22:01:54

为了避免与shell和环境变量发生名称冲突,在Bash脚本中始终使用小写或混合大小写变量是一个好习惯。

你差点就到了。您只需要将变量作为参数传递给第二个脚本,然后根据位置参数在那里提取它。在本例中,您似乎只传递了一个参数,因此$1可以使用。在其他情况下,对于一个固定数的多个参数,您也可以使用$2$3等。使用可变数量的参数"$@“更合适。

Shell脚本(myshell.sh)

代码语言:javascript
复制
#!/bin/bash
for ((fnum=24; fnum<=30; fnum+=1))
do
     sbatch myscript.slurm "$fnum"
done 

Slurm脚本(myscript.slurm)

代码语言:javascript
复制
#!/bin/bash
#SBATCH --array=1-128

fnum=$1

...
matlab -nodesktop -nodisplay r "frame=[${slurm_array_task_ID}]; filename=[${fnum}]; myfunction(frame, filename);";

对于处理各种超时条件,这可能有效:

代码语言:javascript
复制
A=$(sbatch --parsable a.slurm)

case $? in
    9|64|130|131|137|140)
        echo "some sort of timeout occurred"
        B=$(sbatch --parsable --dependency=afternotok:$A a.slurm)
        ;;
    *)
        echo "some other exit condition occurred"
        ;;
esac

您只需要决定您想要处理的条件以及如何处理它们。我列出了所有似乎涉及暂停的内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档