Slurm:对于GPU和仅CPU作业有两个单独的队列


1

目前,我们已设置Slurm来管理一个由六个节点组成的小型集群,每个集群具有四个GPU。到目前为止,这一直很好,但是现在我们想利用Intel Core i7-5820K CPU来完成仅需要CPU处理能力的作业。每个CPU有六个核心和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=8CoresPerSocket=6 Procs=12,因为这将与实际硬件匹配。

我已经尝试过查阅文档,但是我仍然不知道该怎么办。我需要修改gres.conf吗?File=我应该为CPU指定哪个?然后,我想我要添加第三个分区,也许叫做cpuonly。但这是否是完成我要完成的工作的正确方法?我想我必须Gres=在以开头的行中向参数添加一些内容NodeName

Answers:


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

在那种情况下,如果多个协作者(用户)要共享相同的分钟配额,那么正确的方法是拥有2个单独的Slurm帐户(一个用于GPU,一个用于仅CPU)吗?并在每个分区的定义中相应地设置AllowAccounts?
Youssef Eldakar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.