SLURM смущающее параллельное представление, требующее слишком много ресурсов
Поэтому у меня есть следующий скрипт представления:
#!/bin/bash
#
#SBATCH --job-name=P6
#SBATCH --output=P6.txt
#SBATCH --partition=workq
#SBATCH --ntasks=512
#SBATCH --time=18:00:00
#SBATCH --mem-per-cpu=2500
#SBATCH --cpus-per-task=1
#SBATCH --array=1-512
srun ./P6 $SLURM_ARRAY_TASK_ID
Что я хочу сделать, так это запустить 512 экземпляров программы P6 с аргументом от 1 до 512, и, насколько я знаю, вышеприведенное представление делает это. Тем не менее, после проверки Squeue и Sacm, кажется, SLURM назначил 512 процессоров для каждой задачи!
Что я сделал не так?
1 ответ
Вы попросили 512 заданий для каждой работы. Попросите один (или номер, который вы считаете подходящим для вашего кода):
#SBATCH --ntasks=1
Кстати, в вашем скрипте отправки есть несколько мелких проблем. Все задания в массиве заданий будут называться одинаково (что на самом деле не является проблемой), но они также будут использовать файл stdout, так что вы получите смешанную информацию обо всех заданиях в P6.txt. Я бы посоветовал вам дифференцировать их с помощью JobID или TaskId (%j/%A/%a).
Кроме того, вы не определяете стандартное назначение ошибок, поэтому, если что-то не работает или записывается в stderr, вы потеряете эту информацию. Я рекомендую также определить стандартную ошибку (#SBATCH --error=P6.txt.%j
).
Еще одна деталь - рабочая папка не определена. Он будет работать до тех пор, пока вы отправляете сценарий из соответствующей папки, но если вы попытаетесь отправить его из другого места, произойдет сбой.