Использование srun вне SLURM - PullRequest
       6

Использование srun вне SLURM

0 голосов
/ 15 января 2019

У меня есть код, который обычно запускается под SLURM. Что-то вроде

if ! lengthy_command
then
    echo "Error occured"
fi

В целях учета я хотел бы перейти к srun запуску команды на основе:

if ! srun <srun params> lengthy_command
then
    echo "Error occured"
fi

Но после изменения этой строки скрипт больше не будет работать в интерактивном сеансе (вне SLURM). Есть ли способ обобщить сценарий, чтобы он мог работать в обоих условиях? В документации srun я не вижу ничего, что указывало бы на это.

1 Ответ

0 голосов
/ 16 января 2019

Один из вариантов - использовать переменную и установить ее на srun в работе (например, если установлено $SLURM_JOBID), а в противном случае оставить ее пустой.

if [ -n $SLURM_JOBID ] ;  
then 
LAUNCH=srun <srun params>
else
LAUNCH=
fi

if ! $LAUNCH lengthy_command
then
    echo "Error occured"
fi

Этот подход может быть расширен путем установки LAUNCH в parallel <parallel options> при использовании параллельной GNU или других команд при запуске в кластере с другим планировщиком.

Другой вариант - создать функцию Bash с именем srun, которая инкапсулирует логику (не проверено):

srun() {
if [ -n $SLURM_JOBID ] ;  
then 
command srun $@
else
$@
fi
}
...