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).

Еще одна деталь - рабочая папка не определена. Он будет работать до тех пор, пока вы отправляете сценарий из соответствующей папки, но если вы попытаетесь отправить его из другого места, произойдет сбой.

Другие вопросы по тегам