У меня есть следующий скрипт задания SLURM с именем gzip2zipslurm.sh
:
#!/bin/bash
#SBATCH --mem 70G
#SBATCH --ntasks 4
echo "Task 1"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.A-B.xml.tar.gz &
echo "Task 2"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.C-H.xml.tar.gz &
echo "Task 3"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.I-N.xml.tar.gz &
echo "Task 4"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.O-Z.xml.tar.gz &
echo "Waiting for job steps to end"
wait
echo "Script complete"
Я отправляю его в SLURM по sbatch gzip2zipslurm.sh
.Когда я это сделаю, вывод файла журнала SLURM будет
Task 1
Task 2
Task 3
Task 4
Waiting for job steps to end
. Программа tar2zip
читает указанный файл tar.gz
и перепаковывает его как файл ZIP
.
Проблема: только один процессор (из 16 доступных на свободном узле) выполняет какую-либо работу.С top
я вижу, что всего 5 srun
команд было запущено (я полагаю, 4 для моих задач и 1 неявное для задания sbatch), но есть только один Java-процесс.Я также вижу это на файлах, над которыми работаем, только одна написана.
Как мне сделать так, чтобы все 4 задачи фактически выполнялись параллельно?
Спасибо за любые подсказки!