Сценарий Master SLURM, который вызывает другие SLURMS - PullRequest
0 голосов
/ 06 декабря 2018

Я - исследователь рака, и нам было интересно, знает ли кто-нибудь из вас, как сделать сценарий SLURM, который вызывает другие slurms.Если предыдущий сценарий успешно завершен, перейдите к следующему вызову.IE что-то вроде:

#!/bin/bash
#SBATCH --nodes=1 
#SBATCH --tasks-per-node=1
#SBATCH --time=24:00:00
#SBATCH --mem=40GB?
#SBATCH --job-name=Master_script
#call first slurm
sbatch a.slurm
#if it completes successfully
if a.slurm:
   sbatch b.slurm
   if b.slurm:
      sbatch c.slurm
      sbatch d.slurm
      if c.slurm:
          sbatch e.slurm
      else:
         echo "c.slurm did not complete successfully"
   else:
      echo "b.slurm did not complete successfully"
else:
    echo "a.slurm did not complete successfully"

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете отправить 5 заданий с параметром --dependency, равным sbatch.

На странице :

-d, -Зависимость = Отложить запуск этого задания до тех пор, пока указанные зависимости не будут выполнены.

В вашем случае это будет выглядеть так:

A=$(sbatch --parsable a.slurm)
B=$(sbatch --parsable --dependency=afterok:$A a.slurm)    
C=$(sbatch --parsable --dependency=afterok:$B a.slurm)    
D=$(sbatch --parsable --dependency=afterok:$B a.slurm)    
E=$(sbatch --parsable --dependency=afterok:$D a.slurm)    

Обратите внимание, что в таком случаеЗадания, зависящие от других заданий, будут оставаться в ожидании бесконечно, если зависимое задание не будет выполнено.Вам придется либо чистить их вручную, либо отправлять пустые задания для случаев, когда задание не выполняется с --dependency=afternotok:....

Если ваш рабочий процесс усложняется, может быть интересно исследовать использование рабочего процесса менеджеры такие как Боско или Фейерверк .

...