目前,我们已经设置了 Slurm 来管理一个由 6 个节点组成的小型集群,每个节点有 4 个 GPU。到目前为止,它运行良好,但现在我们想利用英特尔酷睿 i7-5820KCPU 用于仅需要 CPU 处理能力的作业。每个 CPU 有 6 个内核和 12 个线程,每个 GPU 需要一个线程/逻辑内核,因此剩余 8 个线程(每个节点)可用于“仅需要 CPU”的作业。
当前配置:
猫/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=
我应该为 CPU 指定哪个?然后,我想我会添加第三个分区,可能称为cpuonly
。但这是否是完成我想要做的事情的正确方法?我想我必须Gres=
在以 开头的行中添加一些参数NodeName
。
答案1
- 设置两个分区,一个用于 GPU,一个用于 CPU 作业。分别用于
MaxCPUsPerNode
每个分区。 - 使用参数设置节点
CPUs
。所有MaxCPUsPerNode
添加的节点应小于或等于此值(可用 CPU/核心/线程) - 使用
SelectTypeParameters=CR_CPU
- 使用
SchedulerType=sched/backfill