Skip to content

Commit b4338a1

Browse files
authored
Bug fix - handle fractions in status.queueDetails correctly(#61)
(r *ResourceRequirements) ToResourceList() will now handle fractional gpus correctly + unitest
1 parent 3996450 commit b4338a1

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

pkg/scheduler/api/resource_info/resource_requirment.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ func RequirementsFromResourceList(rl v1.ResourceList) *ResourceRequirements {
7171
func (r *ResourceRequirements) ToResourceList() v1.ResourceList {
7272
rl := r.BaseResource.ToResourceList()
7373

74-
rl[GPUResourceName] = *resource.NewQuantity(int64(r.GPUs()), resource.DecimalSI)
74+
if r.GPUs() > 0 && r.GPUs() < wholeGpuPortion { // fractional GPUs
75+
rl[GPUResourceName] = *resource.NewMilliQuantity(int64(r.GPUs()*1000), resource.DecimalSI)
76+
} else { // whole GPUs
77+
rl[GPUResourceName] = *resource.NewQuantity(r.GetNumOfGpuDevices(), resource.DecimalSI)
78+
}
79+
7580
for rName, rQuant := range r.MigResources() {
7681
rl[rName] = *resource.NewQuantity(rQuant, resource.DecimalSI)
7782
}

pkg/scheduler/api/resource_info/resource_requirment_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@ var _ = Describe("ResourceRequirements Info internal logic", func() {
4444
newResourceList := resourceInfo.ToResourceList()
4545
compareResourceLists(resourceList, newResourceList)
4646
})
47+
It("GPU Fractional Resources", func() {
48+
resourceInfo := NewResourceRequirementsWithGpus(0.5)
49+
Expect(resourceInfo.GPUs()).To(Equal(0.5))
50+
51+
newResourceList := resourceInfo.ToResourceList()
52+
gpuResource := newResourceList[GPUResourceName]
53+
Expect(gpuResource.MilliValue()).To(Equal(int64(500)))
54+
})
4755
It("Other Resources", func() {
4856
resourceList := v1.ResourceList{
4957
v1.ResourceName("run.ai/test-resource"): resource.MustParse("1"),

0 commit comments

Comments
 (0)