#gpu #cluster-computing #slurm
#графический процессор #кластерные вычисления #slurm
Вопрос:
Как я могу создать задание с несколькими графическими процессорами того же типа, но не с конкретным типом напрямую? В моем эксперименте есть ограничение, что все графические процессоры имеют один и тот же тип, но этот тип может быть любым, какой мы захотим.
В настоящее время я могу только создать эксперимент с несколькими графическими процессорами, точно указав, какой тип я хочу:
--gres=gpu:gres_type:amount
Если я не укажу gres_type
, то иногда я получаю смешанные пакеты графических процессоров (скажем, 2x titan V и 2x titan X).
Ответ №1:
Если вам повезло, что кластер согласован с типами узлов, на которых размещены графические процессоры, и что features
узлы указаны правильно и позволяют различать узлы, на которых размещены разные типы графических процессоров, вы можете использовать этот --constraint
параметр.
Ради аргумента давайте предположим, что узлы, на которых размещены titanV
процессоры, имеют haswell
процессоры, а те, на которых размещены titanX
skylake
процессоры, и что они определены как функции. Затем вы можете запросить
--gres=gpu:2
--constraint=[haswell|skylake]
Если вышесказанное не относится к вашему варианту использования, вы можете отправить два задания и сохранить только то, которое запускается раньше. Для этого дайте вашим заданиям одинаковые имена и используйте singleton
зависимость.
Напишите сценарий отправки, подобный этому
#!/bin/bash
#SBATCH --dependency=singleton
#SBATCH --job-name=gpujob
# Other options
scancel --state=PENDING --jobname=gpujob
# etc.
и отправьте его дважды с
$ sbatch --gres=gpu:titanX:2 submit.sh
$ sbatch --gres=gpu:titanV:2 submit.sh
Каждому заданию будет назначен только один тип графического процессора, и первое, которое запускается, отменит другое. Этот подход может быть расширен с использованием более двух типов графических процессоров.
Комментарии:
1. К сожалению, в кластере, который я использую, нет возможности выполнять
scancel
задания с запущенного узла.