计算化学公社

标题: 如何配置Slurm才能共享节点上的多张显卡 [打印本页]

作者
Author:
万里云    时间: 2024-12-30 18:03
标题: 如何配置Slurm才能共享节点上的多张显卡
本帖最后由 万里云 于 2024-12-30 18:08 编辑

集群上共有五个GPU节点,每个两张显卡。Slurm.conf中配置信息如下:

# GPU nodes
NodeName=GPUnode67 CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=257592 Gres=gpu:2
NodeName=GPUnode66 CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=257592 Gres=gpu:2
NodeName=GPUnode68 CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=257592 Gres=gpu:2
NodeName=GPUnode70 CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=257592 Gres=gpu:2
NodeName=GPUnode69 CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=257592 Gres=gpu:2

# GPU partitions
PartitionName=gpu_test Nodes=GPUnode[66-70] Default=NO MaxTime=60 State=UP OverSubscribe=NO PriorityTier=3 AllowGroups=p0,p1,p2,quant
PartitionName=gpu_2d Nodes=GPUnode[66-70] Default=NO MaxTime=2880 State=UP OverSubscribe=NO PriorityTier=2 AllowGroups=p0,p1,p2
PartitionName=gpu_7d Nodes=GPUnode[66-70] Default=NO MaxTime=10080 State=UP OverSubscribe=NO PriorityTier=1 AllowGroups=p0,p1,p2
PartitionName=gpu_unlimited Nodes=GPUnode[66-70] Default=NO MaxTime=INFINITE State=UP OverSubscribe=NO PriorityTier=0 AllowGroups=p0,p1,p2

现在用户反馈若节点上分配了使用单张显卡的任务,虽然还空着一张显卡,也没法利用起来。看了一圈slurm配置手册,似乎需要改OverSubscribe选项,但几个值都说不适合GPU资源(gres)

FORCE
    Makes all resources (except GRES) in the partition available for oversubscription without any means for users to disable it.
YES
    Makes all resources (except GRES) in the partition available for sharing upon request by the job.

不知道要怎么改才能实现两个任务分别利用同个节点上的两张显卡?




作者
Author:
abin    时间: 2024-12-30 18:08
“若节点上分配了使用单张显卡的任务,虽然还空着一张显卡,也没法利用起来”

后续的任务为何等待, 调度器如何报告的?

作者
Author:
万里云    时间: 2024-12-30 18:14
abin 发表于 2024-12-30 18:08
“若节点上分配了使用单张显卡的任务,虽然还空着一张显卡,也没法利用起来”

后续的任务为何等待, 调度 ...

Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions
作者
Author:
Santz    时间: 2024-12-30 19:37
你现在的问题不是共享显卡,而是显卡不能充分调用。你说的 超额支持 CPU 和 GPU 的,GPU 的超额建议使用shard,shard 可以让你一张显卡同时运行多个任务。
作者
Author:
abin    时间: 2024-12-31 09:14
结合楼上的数条信息, 你的问题能否描述为:

一个节点有两个GPU,
任务A在节点比如nodeXX要了一个GPU,
理论上讲, 还剩余一个GPU, 那么后续的任务, 如没有其他资源限定的时候,
后续任务B, 如果也是要一个GPU, 任务应该能在节点nodeXX上运行.


那么, 你的GPU和CPU核心如何绑定的?
以及节点的内存是否被GRES管辖?


作者
Author:
wxyhgk    时间: 2024-12-31 17:05
OverSubscribe 通常只控制 CPU 的共享状态

在全局配置中启用 TRES(Trackable RESources)方式进行资源管理。

- 在 /etc/slurm/slurm.conf 中,

设置:       SelectType=select/cons_tres       SelectTypeParameters=CR_CORE|CR_GPU       GresTypes=gpu  2) 为节点正确声明 Gres=gpu:2,并确保没有用


作者
Author:
万里云    时间: 2025-1-1 12:48
Santz 发表于 2024-12-30 19:37
你现在的问题不是共享显卡,而是显卡不能充分调用。你说的 超额支持 CPU 和 GPU 的,GPU 的超额建议使用sha ...

可能我表述不准确,意思就是两个任务每个用一张卡。现在已经解决了。
作者
Author:
万里云    时间: 2025-1-1 12:58
abin 发表于 2024-12-31 09:14
结合楼上的数条信息, 你的问题能否描述为:

一个节点有两个GPU,

已经解决了,提交脚本的问题。虽然只申请了一张显卡,但申请了全部cpu核和内存,所以节点就变成drain了。砍掉一半核和内存就可以了。
作者
Author:
万里云    时间: 2025-1-1 12:58
wxyhgk 发表于 2024-12-31 17:05
OverSubscribe 通常只控制 CPU 的共享状态

在全局配置中启用 TRES(Trackable RESources)方式进行资源 ...

已经解决了,提交脚本的问题。虽然只申请了一张显卡,但申请了全部cpu核和内存,所以节点就变成drain了。砍掉一半核和内存就可以了。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3