Назад | Перейти на главную страницу

Slurm: иметь две отдельные очереди для задач только для GPU и CPU

На данный момент мы настроили Slurm для управления небольшим кластером из шести узлов с четырьмя графическими процессорами в каждом. До сих пор это отлично работало, но теперь мы хотим использовать Intel Core i7-5820K ЦП для задач, требующих только вычислительной мощности ЦП. Каждый ЦП имеет шесть ядер и 12 потоков, каждому графическому процессору требуется один поток / логическое ядро, поэтому остается 8 потоков (на узел), которые можно использовать для задач «только ЦП».

Текущая конфигурация:

кошка /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

кошка /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.

  • Настройте два раздела: один для графического процессора, другой для задач ЦП. Использовать MaxCPUsPerNode для каждого.
  • Настройте узлы с помощью CPUs Параметр. Все MaxCPUsPerNode добавленное должно быть меньше или квалифицировано, чем это (доступные процессоры / ядра / потоки)
  • Использовать SelectTypeParameters=CR_CPU
  • Использовать SchedulerType=sched/backfill