小编Kat*_*gun的帖子

将参数传递到 slurm 脚本中

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

1)是否可以创建一个shell脚本来循环另一个变量?
2) 我可以将变量传递给 slurm 脚本吗?

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

#!/bin/bash
#SBATCH --array=1-128
...
matlab -nodesktop r "frame=[${SLURM_ARRAY_TASK_ID}]; filename=['Person24']; myfunction(frame, filename);";
Run Code Online (Sandbox Code Playgroud)

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

我可以制作一个将变量传递给 slurm 脚本的 shell 脚本吗?例如,这样的事情:

Shell 脚本 (myshell.sh)

#!/bin/bash
for ((FNUM=24; FNUM<=30; FNUM+=1));
do
     sbatch myscript.slurm  >> SOMEHOW PASS ${FNUM} HERE (?)
done 
Run Code Online (Sandbox Code Playgroud)

Slurm 脚本 (myscript.slurm)

#!/bin/bash
#SBATCH --array=1-128
...
matlab -nodesktop -nodisplay r "frame=[${SLURM_ARRAY_TASK_ID}]; filename=[${FNUM}]; myfunction(frame, filename);";
Run Code Online (Sandbox Code Playgroud)

我可以使用 sbatch myshell.sh 等高效提交所有作业

谢谢你!

arrays bash matlab slurm sbatch

3
推荐指数
1
解决办法
6506
查看次数

标签 统计

arrays ×1

bash ×1

matlab ×1

sbatch ×1

slurm ×1