Azure / Azure/cyclecloud-slurm

Feature: Implement support for slurm priority and DefCpuPerGPU

Open
#351 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
84
Forks
56
Avg merge
3d 17h
Merged PRs (30d)
1

Description

Not sure if this is the right channel, but I'm implementing my own cyclecloud project to retroactively add support for slurm priority and DefCpuPerGPU in slurm after cyclecloud-slurm install finishes. I didn't see a way to do this natively and it would probably be cleaner to do it that way. I don't currently use dynamic partitions because afaik it does not have DefCpuPerGPU implemented there either. For example if I had a dynamic partition with NC A100 v4 series VMs, DefCpuPerGPU should be set to 24 but I don't see any way to ensure that. The GPU users generally do not really care about cpu/mem as long as they get the maximum allowed per GPU. The cyclecloud project I implemented sets up partitions and priority this way[1]. It calculates those values and appends it to the end of the partition config. I also added a priority.conf slurm config[2] and added partitions for our reserved static non-dynamic (keep-alive) slurm nodes. This is also missing or I could not find how to configure it natively. Would appreciate thoughts and opinions.

[1]
PartitionName=cpu-ond Nodes=cpuond-[1-6] Default=YES DefMemPerCPU=3891 MaxTime=INFINITE State=UP
Nodename=cpuond-[1-6] Feature=cloud STATE=CLOUD CPUs=24 ThreadsPerCore=2 RealMemory=93388
PartitionName=cpu-spt Nodes=cpuspt-[1-10] Default=NO DefMemPerCPU=3891 MaxTime=INFINITE State=UP
Nodename=cpuspt-[1-10] Feature=cloud STATE=CLOUD CPUs=24 ThreadsPerCore=2 RealMemory=93388
PartitionName=t4-ond Nodes=nc16ast4v3ond-1 Default=NO DefMemPerCPU=6688 MaxTime=INFINITE State=UP DefCpuPerGPU=16
Nodename=nc16ast4v3ond-1 Feature=cloud STATE=CLOUD CPUs=16 ThreadsPerCore=1 RealMemory=107008 Gres=gpu:1
PartitionName=t4-spt Nodes=nc16ast4v3spt-[1-2] Default=NO DefMemPerCPU=6688 MaxTime=INFINITE State=UP DefCpuPerGPU=16
Nodename=nc16ast4v3spt-[1-2] Feature=cloud STATE=CLOUD CPUs=16 ThreadsPerCore=1 RealMemory=107008 Gres=gpu:1
PartitionName=a100-ond Nodes=nc24adsv4ond-[1-4] Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc24adsv4ond-[1-4] Feature=cloud STATE=CLOUD CPUs=24 ThreadsPerCore=1 RealMemory=214016 Gres=gpu:1
PartitionName=a100-spt Nodes=nc24adsv4spt-[1-8] Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc24adsv4spt-[1-8] Feature=cloud STATE=CLOUD CPUs=24 ThreadsPerCore=1 RealMemory=214016 Gres=gpu:1
PartitionName=a100x2-ond Nodes=nc48adsv4ond-[1-2] Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc48adsv4ond-[1-2] Feature=cloud STATE=CLOUD CPUs=48 ThreadsPerCore=1 RealMemory=428032 Gres=gpu:2
PartitionName=a100x2-spt Nodes=nc48adsv4spt-[1-4] Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc48adsv4spt-[1-4] Feature=cloud STATE=CLOUD CPUs=48 ThreadsPerCore=1 RealMemory=428032 Gres=gpu:2
PartitionName=a100x4-ond Nodes=nc96adsv4ond-1 Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc96adsv4ond-1 Feature=cloud STATE=CLOUD CPUs=96 ThreadsPerCore=1 RealMemory=856064 Gres=gpu:4
PartitionName=a100x4-spt Nodes=nc96adsv4spt-[1-2] Default=NO DefMemPerCPU=8917 MaxTime=INFINITE State=UP DefCpuPerGPU=24
Nodename=nc96adsv4spt-[1-2] Feature=cloud STATE=CLOUD CPUs=96 ThreadsPerCore=1 RealMemory=856064 Gres=gpu:4
PartitionName=a100x8-rsv Nodes=nd96asrv4-[1-8] Default=NO DefMemPerCPU=9120 MaxTime=INFINITE State=UP DefCpuPerGPU=12
Nodename=nd96asrv4-[1-8] Feature=cloud STATE=CLOUD CPUs=96 ThreadsPerCore=1 RealMemory=875520 Gres=gpu:8
PartitionName=a10-ond Nodes=nv36adsv5ond-[1-75] Default=NO DefMemPerCPU=23779 MaxTime=INFINITE State=UP DefCpuPerGPU=18
Nodename=nv36adsv5ond-[1-75] Feature=cloud STATE=CLOUD CPUs=18 ThreadsPerCore=2 RealMemory=428032 Gres=gpu:1
PartitionName=a10-spt Nodes=nv36adsv5spt-[1-75] Default=NO DefMemPerCPU=23779 MaxTime=INFINITE State=UP DefCpuPerGPU=18
Nodename=nv36adsv5spt-[1-75] Feature=cloud STATE=CLOUD CPUs=18 ThreadsPerCore=2 RealMemory=428032 Gres=gpu:1
PartitionName=a10x2-rsv Nodes=nv72adsv5-[1-3] Default=NO DefMemPerCPU=23779 MaxTime=INFINITE State=UP DefCpuPerGPU=18
Nodename=nv72adsv5-[1-3] Feature=cloud STATE=CLOUD CPUs=36 ThreadsPerCore=2 RealMemory=856064 Gres=gpu:2
PartitionName=a100x8-rsv-HP Nodes=nd96asrv4-[1-8] Default=NO DefMemPerCPU=9120 MaxTime=INFINITE State=UP DefCpuPerGPU=12 Priority=5000
PartitionName=a10x2-rsv-HP Nodes=nv72adsv5-[1-3] Default=NO DefMemPerCPU=23779 MaxTime=INFINITE State=UP DefCpuPerGPU=18 Priority=5000

[2]
# JOB PRIORITY
#PriorityFlags=
PriorityType=priority/multifactor
#PriorityDecayHalfLife=
#PriorityCalcPeriod=
PriorityFavorSmall=NO
PriorityMaxAge=14-0
#PriorityUsageResetPeriod=
PriorityWeightAge=1000
PriorityWeightFairshare=10000
PriorityWeightJobSize=1000
PriorityWeightPartition=1000
PriorityWeightQOS=0

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the cyclecloud-slurm install flow and how it generates Slurm partition configuration, including dynamic partitions. Compare that path with the example partition settings and priority.conf in the issue; done should mean native configuration covers priority and DefCpuPerGPU for the requested partition types.

Written by the indexing model from the issue text.

Assessment

Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.