Кластер, который я использую, только что переключился на SLURM, и я пытаюсь сделать что-то очень простое. У меня есть сценарий, который я хочу запустить для множества файлов, пронумерованных последовательно, например:
python script.py file1.gz
python script.py file2.gz
python script.py file3.gz
У меня есть несколько кусочков, но я не могу понять, как их собрать и запустить. Я думаю, мне нужно использовать #SBATCH --array=0-29
для вызова количества файлов, и $SLURM_ARRAY_TASK_ID
тоже задействован.
#!/bin/bash -l
#SBATCH --ntasks=1
#SBATCH --time=24:00:00
#SBATCH --mem=4G
#SBATCH --array=0-29 ##my files go from file1 - file30
$SLURM_ARRAY_TASK_ID
Я не уверен, как объединить SBATCH --array
и ARRAY_TASK_ID
, чтобы script.py
работал со всеми файлами сразу.
У вас почти есть это:
#!/bin/bash -l
#SBATCH --ntasks=1
#SBATCH --time=24:00:00
#SBATCH --mem=4G
#SBATCH --array=1-30 ##my files go from file1 - file30
python script.py "file${SLURM_ARRAY_TASK_ID}.gz"
Вам лучше пронумеровать элементы массива, как нумерацию файлов, которая у вас есть. А затем вызовите сценарий с правильным именем файла, созданного с помощью этой переменной SLURM.
Этот сценарий отправки заданий ставит в очередь массив заданий, каждое задание имеет ограничение по времени 24 часа, использует до 4 ГБ памяти и выполняет только одну задачу (для одного процессора).