Slurm: есть две отдельные очереди для заданий только на GPU и CPU
На данный момент мы настроили Slurm для управления небольшим кластером из шести узлов с четырьмя графическими процессорами в каждом. До сих пор это работало замечательно, но теперь мы хотим использовать процессоры Intel Core i7-5820K для задач, которые требуют только вычислительной мощности процессора. Каждый ЦП имеет шесть ядер и 12 потоков, для каждого графического процессора требуется один поток / логическое ядро, поэтому осталось 8 потоков (на узел), которые можно использовать для заданий "только для процессора".
Текущая конфигурация:
cat /etc/slurm-llnl/gres.conf
Name=gpu File=/dev/nvidia0
Name=gpu File=/dev/nvidia1
Name=gpu File=/dev/nvidia2
Name=gpu File=/dev/nvidia3
cat /etc/slurm-llnl/slurm.conf (отрывок)
SchedulerType=sched/builtin
SelectType=select/cons_res
SelectTypeParameters=CR_Core
AccountingStorageType=accounting_storage/none
GresTypes=gpu
MaxTasksPerNode=4
NodeName=node1 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node2 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node3 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node4 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node5 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node6 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
PartitionName=gpu Nodes=node[2-6] Default=NO Shared=NO MaxTime=INFINITE State=UP
PartitionName=short Nodes=node1 Default=YES Shared=NO MaxTime=INFINITE State=UP
Я думаю, что первым шагом было бы изменить CoresPerSocket=4 Procs=8
в CoresPerSocket=6 Procs=12
, потому что это будет соответствовать фактическому оборудованию.
Я уже пытался обратиться к документации, но я все еще не знаю, что делать. Нужно ли изменять gres.conf
? Который File=
я должен указать для процессора? Затем я подумал, что добавлю третий раздел, возможно, под названием cpuonly
, Но разве это верный способ достичь того, что я пытаюсь сделать? Я думаю, я должен что-то добавить к Gres=
параметр в строках, начинающихся с NodeName
,
1 ответ
- Установите два раздела, один для графического процессора, другой для работы с процессором. использование
MaxCPUsPerNode
для каждого. - Настройте узлы, используя
CPUs
Параметр. ВсеMaxCPUsPerNode
добавлено должно быть меньше или качественнее, чем это (доступные процессоры / ядра / потоки) - использование
SelectTypeParameters=CR_CPU
- использование
SchedulerType=sched/backfill