我需要一次提交多个SLURM作业,但是所有这些都需要具有一些我希望能够从命令行传递的公用变量。我想到的是这样的: 命令行输入类似
bash MasterScript.sh -variable1 var1 -variable2 var2
MasterScript.sh所在的位置
sbatch JobSubmitter.sh -variable1in var1 -variable2in var2 -version 1
sbatch JobSubmitter.sh -variable1in var1 -variable2in var2 -version 2
sbatch JobSubmitter.sh -variable1in var1 -variable2in var2 -version 3
,然后jobsubmitter.sh看起来
#!/bin/bash
# Prepare
#SBATCH --partition=devq
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=40
#SBATCH --mem=1g
#SBATCH --time=00:02:00
# Load modules
module purge
module load matlab-uon/r2018b
#
matlab -nodesktop -r "parpool('local',40);MyFun(variable1inin,variable2in,version)";
现在,对于每个“版本”(共有六个),我都有一个不同的SLURM脚本,每次我想更改输入参数时,都必须在所有六个脚本中进行编辑,然后从一个主脚本,无需输入。在这里我不知道怎么做的一件事就是转换输入参数,这样它们仍然会出现在用于Matlab命令的逐字环境中。