Slurm:为GPU和仅CPU作业分配两个队列

目前,我们已经build立了Slurm来pipe理一个由六个GPU组成的小型集群。 到目前为止,这一切都非常成功,但是现在我们希望利用英特尔酷睿i7-5820K CPU来处理只需要CPU处理能力的作业。 每个CPU有六个核心和12个线程,每个GPU需要一个线程/逻辑核心,所以剩余的8个线程(每个节点)可以用于“仅CPU”作业。

当前configuration:

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吗? 我应该为CPU指定哪个File= ? 然后,我想我会添加第三个分区,也许被称为cpuonly 。 但是,即使是正确的方式来完成我想要做的? 我想我必须添加一些东西在NodeName开始的行中的Gres=参数。

  • 设置两个分区,一个用于GPU,另一个用于CPU作业。 为每个使用MaxCPUsPerNode
  • 使用CPUs参数设置节点。 所有添加的MaxCPUsPerNode应该小于或等于此(可用的CPU /内核/线程)
  • 使用SelectTypeParameters=CR_CPU
  • 使用SchedulerType=sched/backfill