Я использую сценарии slurm для запуска массивов для вычислений Matlab в кластере.Каждый скрипт использует массив для циклического перебора параметра matlab.
1) Можно ли создать сценарий оболочки для зацикливания другой переменной?
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 Script (myshell.sh)
#!/bin/bash
for ((FNUM=24; FNUM<=30; FNUM+=1));
do
sbatch myscript.slurm >> SOMEHOW PASS ${FNUM} HERE (?)
done
Slurm script (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
Спасибо!