Массивы заданий Slurm: есть ли способ создать массив заданий для Slurm, который запускается в разное время? - PullRequest
2 голосов
/ 21 сентября 2019

У меня есть долгосрочное задание, которое я хочу запустить с использованием массива заданий в slurm.

Сценарий, который я сейчас использую для отправки работ:

#!/bin/bash

#SBATCH --output=slurm-%A_%a.out

#SBATCH --array=1-30

#SBATCH --ntasks=1

#SBATCH --qos=qos-15d

#SBATCH --partition=large

#SBATCH --mem=4G

srun ./a

Этот скрипт отлично работает, но моя проблема в том, что это массив из 30 заданий, мне нужно запустить первое в момент X, а затем запустить второе через X минут и так далее.Я хочу сделать это, потому что я буду моделировать C-скомпилированную программу, которая использует функцию srand (time (0)) для генерации случайных чисел.Таким образом, приведенный выше скрипт выдает одинаковые результаты для 30 симуляций, поскольку сгенерированное случайное число будет одинаковым.Поскольку выполнение каждого моделирования занимает много времени, я не могу дождаться завершения задания, прежде чем приступить к другому заданию.

1 Ответ

0 голосов
/ 23 сентября 2019

Предполагая, что вы единственный, кто использует кластер (в противном случае время запуска не будет одинаковым для всех ваших заданий), один маленький трюк - добавить случайный спящий режим в начале вашего сценария:

#!/bin/bash

#SBATCH --output=slurm-%A_%a.out
#SBATCH --array=1-30
#SBATCH --ntasks=1
#SBATCH --qos=qos-15d
#SBATCH --partition=large
#SBATCH --mem=4G

sleep $((RANDOM%30+1))

srun ./a

Даже если все задания запускаются в одно и то же время, они проведут некоторое время (от 1 до 30 секунд) в спящем режиме, прежде чем начнутся вычисления.

...