Skip to content

Commit 3ab0394

Browse files
authored
Merge pull request #67 from Hardik-G/gpu-tracker
Removing Unnecessary Logs and Enhancing Error Reporting for Internal Operations in GPU Tracker
2 parents 87b2645 + 9ffdd90 commit 3ab0394

3 files changed

Lines changed: 27 additions & 40 deletions

File tree

build/debian/DEBIAN/postinst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ AMD_CTK_CMD=/usr/local/bin/amd-ctk
66

77
case "$1" in
88
configure)
9-
echo "Initializing AMD GPU Tracker..."
10-
"${AMD_CTK_CMD}" gpu-tracker init || echo "Failed to initialize GPU Tracker"
9+
"${AMD_CTK_CMD}" gpu-tracker init || true
1110
;;
1211
esac
1312

build/rpmbuild.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ echo "AMD GPU driver found."
2525

2626
%post
2727
# Initialize GPU tracker after install
28-
/usr/bin/amd-ctk gpu-tracker init || echo "Failed to initialize GPU Tracker"
28+
/usr/bin/amd-ctk gpu-tracker init || true
2929

3030
%preun
3131
/bin/bash /usr/share/amd-container-toolkit/cleanup.sh

internal/gpu-tracker/gpu-tracker.go

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,12 @@ func acquireLock(lockFile string) (*flock.Flock, error) {
174174
select {
175175
case <-timeout:
176176
logger.Log.Printf("Acquiring lock timeout exceeded")
177-
fmt.Printf("Acquiring lock timeout exceeded\n")
178-
return nil, fmt.Errorf("lock acquisition timed out")
177+
return nil, fmt.Errorf("Acquiring lock timeout exceeded")
179178
case <-tick:
180179
locked, err := lock.TryLock()
181180
if err != nil {
182181
logger.Log.Printf("Failed to acquire lock, Error: %v", err)
183-
fmt.Printf("Failed to acquire lock, Error: %v\n", err)
184-
return nil, err
182+
return nil, fmt.Errorf("Failed to acquire lock, Error: %v", err)
185183
}
186184
if locked {
187185
return lock, nil
@@ -211,8 +209,7 @@ func parseGPUsList(gpus string) ([]int, []string, []string, error) {
211209
gpusInfo, err := amdgpu.GetAMDGPUs()
212210
if err != nil {
213211
logger.Log.Printf("Failed to get AMD GPUs info, Error: %v", err)
214-
fmt.Printf("Failed to get AMD GPUs info, Error: %v\n", err)
215-
return []int{}, []string{}, []string{}, err
212+
return []int{}, []string{}, []string{}, fmt.Errorf("Failed to get AMD GPUs info, Error: %v", err)
216213
}
217214

218215
if gpus == "all" || gpus == "All" || gpus == "ALL" {
@@ -287,8 +284,7 @@ func isGPUTrackerInitialized() (bool, error) {
287284
gpuTrackerInitialized = true
288285
} else {
289286
if !os.IsNotExist(err) {
290-
fmt.Printf("Error checking file %v, Error:%v\n", gpuTrackerFile, err)
291-
return false, err
287+
return false, fmt.Errorf("Error checking file %v, Error:%v", gpuTrackerFile, err)
292288
}
293289
}
294290

@@ -299,17 +295,17 @@ func readGPUTrackerFile() (gpu_tracker_data_t, error) {
299295
file, err := os.Open(gpuTrackerFile)
300296
if err != nil {
301297
logger.Log.Printf("Error opening file, Error: %v", err)
302-
fmt.Printf("Error opening file, Error: %v\n", err)
303-
return gpu_tracker_data_t{GPUsStatus: make(map[int]gpu_status_t), GPUsInfo: make(map[int]amdgpu.DeviceInfo)}, err
298+
return gpu_tracker_data_t{GPUsStatus: make(map[int]gpu_status_t), GPUsInfo: make(map[int]amdgpu.DeviceInfo)},
299+
fmt.Errorf("Error opening file, Error: %v", err)
304300
}
305301
defer file.Close()
306302

307303
var gpuTrackerData gpu_tracker_data_t
308304
decoder := json.NewDecoder(file)
309305
if err := decoder.Decode(&gpuTrackerData); err != nil {
310306
logger.Log.Printf("Failed to decode JSON, Error: %v", err)
311-
fmt.Printf("Failed to decode JSON, Error: %v\n", err)
312-
return gpu_tracker_data_t{GPUsStatus: make(map[int]gpu_status_t), GPUsInfo: make(map[int]amdgpu.DeviceInfo)}, err
307+
return gpu_tracker_data_t{GPUsStatus: make(map[int]gpu_status_t), GPUsInfo: make(map[int]amdgpu.DeviceInfo)},
308+
fmt.Errorf("Failed to decode JSON, Error: %v", err)
313309
}
314310

315311
return gpuTrackerData, nil
@@ -320,33 +316,29 @@ func writeGPUTrackerFile(gpuTrackerData gpu_tracker_data_t) error {
320316
tempFile, err := os.Create(tempPath)
321317
if err != nil {
322318
logger.Log.Printf("Error creating temp file, Error: %v", err)
323-
fmt.Printf("Error creating temp file, Error: %v\n", err)
324-
return err
319+
return fmt.Errorf("Error creating temp file, Error: %v", err)
325320
}
326321

327322
encoder := json.NewEncoder(tempFile)
328323
if err := encoder.Encode(gpuTrackerData); err != nil {
329324
tempFile.Close()
330325
os.Remove(tempPath)
331326
logger.Log.Printf("Error encoding JSON to temp file, Error: %v", err)
332-
fmt.Printf("Error encoding JSON to temp file, Error: %v\n", err)
333-
return err
327+
return fmt.Errorf("Error encoding JSON to temp file, Error: %v", err)
334328
}
335329

336330
if err := tempFile.Sync(); err != nil {
337331
tempFile.Close()
338332
os.Remove(tempPath)
339333
logger.Log.Printf("Error syncing temp file: %v", err)
340-
fmt.Printf("Error syncing temp file: %v\n", err)
341-
return err
334+
return fmt.Errorf("Error syncing temp file: %v", err)
342335
}
343336

344337
tempFile.Close()
345338

346339
if err := os.Rename(tempPath, gpuTrackerFile); err != nil {
347340
logger.Log.Printf("Error renaming temp file: %v", err)
348-
fmt.Printf("Error renaming temp file: %v\n", err)
349-
return err
341+
return fmt.Errorf("Error renaming temp file: %v", err)
350342
}
351343

352344
return nil
@@ -356,8 +348,7 @@ func initializeGPUTracker() error {
356348
gpusInfo, err := amdgpu.GetAMDGPUs()
357349
if err != nil {
358350
logger.Log.Printf("Failed to get AMD GPUs info, Error: %v", err)
359-
fmt.Printf("Failed to get AMD GPUs info, Error: %v\n", err)
360-
return err
351+
return fmt.Errorf("Failed to get AMD GPUs info, Error: %v", err)
361352
}
362353

363354
uuidToGPUIdMap, err := amdgpu.GetUniqueIdToDeviceIndexMap()
@@ -394,8 +385,7 @@ func validateGPUsInfo(savedGPUsInfo map[int]amdgpu.DeviceInfo) (bool, error) {
394385
tempGPUsInfo, err := amdgpu.GetAMDGPUs()
395386
if err != nil {
396387
logger.Log.Printf("Failed to get AMD GPUs info, Error: %v", err)
397-
fmt.Printf("Failed to get AMD GPUs info, Error: %v\n", err)
398-
return false, err
388+
return false, fmt.Errorf("Failed to get AMD GPUs info, Error: %v", err)
399389
}
400390
currentGPUsInfo := make(map[int]amdgpu.DeviceInfo)
401391
for gpuId, gpuInfo := range tempGPUsInfo {
@@ -412,7 +402,7 @@ func validateGPUsInfo(savedGPUsInfo map[int]amdgpu.DeviceInfo) (bool, error) {
412402
return true, nil
413403
}
414404

415-
func (gpuTracker *gpu_tracker_t) Init() error {
405+
func (gpuTracker *gpu_tracker_t) Init() (err error) {
416406
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
417407
if err != nil {
418408
return fmt.Errorf("Init lock failed: %v", err)
@@ -435,16 +425,14 @@ func (gpuTracker *gpu_tracker_t) Init() error {
435425
err = gpuTracker.initializeGPUTracker()
436426
if err != nil {
437427
logger.Log.Printf("Failed to initialize GPU Tracker, Error: %v", err)
438-
fmt.Printf("Failed to initialize GPU Tracker, Error: %v\n", err)
439-
return err
428+
return fmt.Errorf("Failed to initialize GPU Tracker, Error: %v", err)
440429
}
441430

442431
logger.Log.Printf("GPU Tracker has been initialized")
443-
fmt.Printf("GPU Tracker has been initialized\n")
444432
return nil
445433
}
446434

447-
func (gpuTracker *gpu_tracker_t) Enable() error {
435+
func (gpuTracker *gpu_tracker_t) Enable() (err error) {
448436
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
449437
if err != nil {
450438
return fmt.Errorf("Enable lock failed: %v", err)
@@ -519,7 +507,7 @@ func (gpuTracker *gpu_tracker_t) Enable() error {
519507
return nil
520508
}
521509

522-
func (gpuTracker *gpu_tracker_t) Disable() error {
510+
func (gpuTracker *gpu_tracker_t) Disable() (err error) {
523511
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
524512
if err != nil {
525513
return fmt.Errorf("Disable lock failed: %v", err)
@@ -576,7 +564,7 @@ func (gpuTracker *gpu_tracker_t) Disable() error {
576564
return nil
577565
}
578566

579-
func (gpuTracker *gpu_tracker_t) Reset() error {
567+
func (gpuTracker *gpu_tracker_t) Reset() (err error) {
580568
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
581569
if err != nil {
582570
return fmt.Errorf("Reset lock failed: %v", err)
@@ -655,7 +643,7 @@ func (gpuTracker *gpu_tracker_t) Reset() error {
655643
return nil
656644
}
657645

658-
func (gpuTracker *gpu_tracker_t) ShowStatus() error {
646+
func (gpuTracker *gpu_tracker_t) ShowStatus() (err error) {
659647
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
660648
if err != nil {
661649
return fmt.Errorf("ShowStatus lock failed: %v", err)
@@ -738,7 +726,7 @@ func (gpuTracker *gpu_tracker_t) ShowStatus() error {
738726
return nil
739727
}
740728

741-
func (gpuTracker *gpu_tracker_t) MakeGPUsExclusive(gpus string) error {
729+
func (gpuTracker *gpu_tracker_t) MakeGPUsExclusive(gpus string) (err error) {
742730
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
743731
if err != nil {
744732
return fmt.Errorf("MakeGPUsExclusive lock failed: %v", err)
@@ -841,7 +829,7 @@ func (gpuTracker *gpu_tracker_t) MakeGPUsExclusive(gpus string) error {
841829
return nil
842830
}
843831

844-
func (gpuTracker *gpu_tracker_t) MakeGPUsShared(gpus string) error {
832+
func (gpuTracker *gpu_tracker_t) MakeGPUsShared(gpus string) (err error) {
845833
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
846834
if err != nil {
847835
return fmt.Errorf("MakeGPUsShared lock failed: %v", err)
@@ -932,7 +920,7 @@ func (gpuTracker *gpu_tracker_t) MakeGPUsShared(gpus string) error {
932920
return nil
933921
}
934922

935-
func (gpuTracker *gpu_tracker_t) ReserveGPUs(gpus string, containerId string) ([]int, error) {
923+
func (gpuTracker *gpu_tracker_t) ReserveGPUs(gpus string, containerId string) (allocatedGPUs []int, err error) {
936924
lock, err := acquireLock(gpuTracker.gpuTrackerLockFile)
937925
if err != nil {
938926
return nil, fmt.Errorf("ReserveGPUs lock failed: %v", err)
@@ -949,6 +937,7 @@ func (gpuTracker *gpu_tracker_t) ReserveGPUs(gpus string, containerId string) ([
949937
if r := recover(); r != nil {
950938
logger.Log.Printf("Recovered in ReserveGPUs: %v", r)
951939
err = fmt.Errorf("Panic in ReserveGPUs: %v", r)
940+
allocatedGPUs = []int{}
952941
}
953942
}()
954943

@@ -998,7 +987,6 @@ func (gpuTracker *gpu_tracker_t) ReserveGPUs(gpus string, containerId string) ([
998987
return []int{}, fmt.Errorf("GPUs info is invalid. Please reset GPU Tracker.\n")
999988
}
1000989

1001-
var allocatedGPUs []int
1002990
var unavailableGPUs []int
1003991
for _, gpuId := range validGPUs {
1004992
if gpusTrackerData.GPUsStatus[gpuId].Accessibility == SHARED_ACCESS ||
@@ -1036,7 +1024,7 @@ func (gpuTracker *gpu_tracker_t) ReserveGPUs(gpus string, containerId string) ([
10361024
return allocatedGPUs, nil
10371025
}
10381026

1039-
func (gpuTracker *gpu_tracker_t) ReleaseGPUs(containerId string) error {
1027+
func (gpuTracker *gpu_tracker_t) ReleaseGPUs(containerId string) (err error) {
10401028
removeContainerId := func(containerId string, containerIds []string) ([]string, bool) {
10411029
for idx, id := range containerIds {
10421030
if id == containerId {

0 commit comments

Comments
 (0)