Если я не укажу какую-либо опцию --gres=gpu:1
, процесс будет использовать все графические процессоры в вычислительном узле.
Мы используем Slurm только для совместного использования графических процессоров, поэтому мы хотели бы, чтобы каждому процессу автоматически назначался один графический процессор... Можно ли указать это по умолчанию srun --gres=gpu:1
?
Вы можете установить значение по умолчанию для --gres
, установив переменную env SBATCH_GRES
для всех пользователей, например, в /etc/profile.d
на узле входа. Просто создайте там файл со следующим содержимым:
export SBATCH_GRES=gpu:1
Обратите внимание, что в документации говорится
Обратите внимание, что переменные среды переопределяют любые параметры, установленные в пакетном сценарии.
поэтому людям, которые захотят использовать более одного или вообще не использовать графический процессор, потребуется переопределить это значение по умолчанию с помощью параметра командной строки, и они не смогут переопределить его с помощью строки #SBATCH --gres
в своем сценарии отправки.
Другой вариант — установить CUDA_VISIBLE_DEVICES
пустую строку для всех пользователей по умолчанию. Затем в заданиях, которые запрашивают GPU, переменная будет изменена Slurm в соответствии с запросом, и задания, которые не запрашивают GPU, не будут «видеть» GPU.
Если пользователи, вероятно, будут играть в систему (переменная CUDA_VISIBLE_DEVICES
может быть перезаписана пользователями), то вам придется установить cgroups.
Да, в примечаниях к выпуску для текущей (20.11) версии упоминается об удалении этой опции.
Это все простые и разумные решения проблемы, спасибо. Кстати, вы слышали о параметре
SallocDefaultCommand
вslurm.conf
? В электронном письме системному администратору, которого я знаю, она сказала мне, что использовала этот параметр для определения распределения процессора/графического процессора/и т. д. по умолчанию. Но я не смог найти его в последних версиях Slurm, возможно, это было в более старых версиях...