Массив задач, это средство быстрого формирования очень большого задач, без повышения нагрузки на очередь задач и планировщик.
При формировании массива указывается список индексов, либо стартовый индекс, максимальное значение индекса и его шаг. Запускаемая задача может проверить в переменных окружения параметры массива и назначенное текущему экземпляру значение индекса.
# Перебираем индексы от 0 до 31 включительно
$ sbatch --array=0-31 -N1 myjob
# Перебираем индексы 1, 3, 5, 7
$ sbatch --array=1,3,5,7 -N1 myjob
# Перебираем индексы от 0 до 7 включительно с шагом 2
$ sbatch --array=1-7:2 -N1 myjob
# Дополнительно после символа % можно указать максимальное количество экземпляров, считающихся одновременно
sbatch --array=0-31%5 -N1 myjob
Например, задача, запущенная командой sbatch --array=1-3 -N1 myjob
, увидит следующий набор переменных окружения:
SLURM_ARRAY_TASK_ID=3
SLURM_ARRAY_TASK_COUNT=3
SLURM_ARRAY_TASK_MAX=3
SLURM_ARRAY_TASK_MIN=1
Далее можно сформировать параметры используя значения переменной SLURM_ARRAY_TASK_ID
. Например, программа myjob
может прочитать нужную строку из файла параметров и передать её дальше в качестве аргументов для вычислений:
#!/bin/bash
PARAMS=$(head -n $SLURM_ARRAY_TASK_ID params.txt | tail -n1)
./exefile $PARAMS