Я пытаюсь использовать управляемый Slurm кластер для запуска LS-Dyna (программа моделирования конечных элементов с ограниченным количеством лицензий, доступных в моем кластере ).Я пытаюсь написать свои пакетные сценарии, чтобы не тратить время на обработку из-за этого ограничения лицензии (а также для улучшения разборчивости при выполнении команд 'squeue') с помощью массивов заданий, но у меня возникают проблемы с выполнением этой работы.
Я хочу запускать идентичные сценарии Bash в различных сетках FEM, каждую из которых я организовал в разные подпапки.
Учитывая эту структуру папок в моем кластере ...
cluster root
|
...
|
|-+ my scratch space's root
|
|-+ this project
|
|--+ lat_-5mm
| |- runCurrentLine.bash
| |- other files
|
|--+ lat_-4.75mm
| |- runCurrentLine.bash
| |- other files
|
|--+ lat_-4.5mm
| |- runCurrentLine.bash
| |- other files
|
...
|
|--+ lat_5mm
| |- runCurrentLine.bash
| |- other files
|
|
|-sendDynaRuns.bash
|-other dependencies
... Я пытаюсь отправить "runCurrentLine.bash" в каждую папку, запустив следующий сценарий на моем узле входа в систему.
#!/bin/bash
iter=0
for foldernow in */; do
# change to subdirectory for current line iteration
cd "./${foldernow}";
# make Slurm and user happy
echo "sending LS Dyna simulation for ${pos}mm line..."
sleep 1
# first line only: send batch, and get job ID
if [ "${iter}" == 0 ];then
# send the batch...
jobID=$(sbatch -J "Dyna" --array="${iter}"%15 runCurrentLine.bash)
# ...ensure that Slurm's output shows on console (which includes the job ID)...
echo "${jobID}"
# ...and extract the job ID and save as a variable
jobID=$(echo "${jobID}" | grep -Eo '[+-]?[0-9]+([.][0-9]+)?')
# subsequent lines: add current line to job array
else
scontrol update --jobid="${jobID}" --array="${iter}"%15 runCurrentLine.bash
fi
# prepare to move onto next position
iter=$((iter+1))
cd ../
done
Эта установка правильно отправляет пакетное задание дляпервая линия, при -0,25 мм *.Тем не менее, для второй строки далее, похоже, это не то же самое ... Вот что я в итоге получаю на своей консоли:
*: я предполагал, что папки "lat_xmm" должны быть численнозаказал, но Unix, похоже, не признает, что
$ ./sendDynaRuns.bash
sending LS Dyna simulation for -0.25mm line...
Submitted batch job 1081040
sending LS Dyna simulation for 0.25mm line...
sbatch: error: Batch job submission failed: Invalid job id specified
sending LS Dyna simulation for -0.5mm line...
sbatch: error: Batch job submission failed: Invalid job id specified
Я знаю, что runCurrentLine.bash работает очень хорошо, если я вручную отправляю его как пакет (и он работает до завершения в течение срока, указанного в-файл, в основном, поскольку он не должен конкурировать с другими линиями за открытые лицензии).Что я должен сделать, чтобы мой код заработал?
Заранее спасибо!