我正在使用 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);";
我经常需要运行这个数组来处理许多不同的文件。这意味着我将提交作业(sbatch exampleScript.slurm),编辑文件,将“Person24”更新为“Person25”,然后重新提交作业。当我有大量文件要处理时,这非常低效。
我可以制作一个将变量传递给 slurm 脚本的 shell 脚本吗?例如,像这样:
外壳脚本 (myshell.sh)
#!/bin/bash
for ((FNUM=24; FNUM<=30; FNUM+=1));
do
sbatch myscript.slurm >> SOMEHOW PASS ${FNUM} HERE (?)
done
Slurm 脚本 (myscript.slurm)
#!/bin/bash
#SBATCH --array=1-128
...
matlab -nodesktop -nodisplay r "frame=[${SLURM_ARRAY_TASK_ID}]; filename=[${FNUM}]; myfunction(frame, filename);";
我可以使用 sbatch myshell.sh 之类的东西有效地提交所有作业
谢谢!