diff --git a/agent/utils/ai_tools/gpu/gpu.go b/agent/utils/ai_tools/gpu/gpu.go index 47d94ee4c..d9969b311 100644 --- a/agent/utils/ai_tools/gpu/gpu.go +++ b/agent/utils/ai_tools/gpu/gpu.go @@ -59,11 +59,5 @@ func (n NvidiaSMI) LoadGpuInfo() (*common.GpuInfo, error) { break } - if version == "v12" || version == "v11" { - return schema.Parse(data, version) - } else { - global.LOG.Errorf("don't support such schema version %s", version) - } - - return &common.GpuInfo{}, nil + return schema.Parse(data, version) } diff --git a/agent/utils/ai_tools/gpu/schema/parser.go b/agent/utils/ai_tools/gpu/schema/parser.go index e0801ffff..10efe1c19 100644 --- a/agent/utils/ai_tools/gpu/schema/parser.go +++ b/agent/utils/ai_tools/gpu/schema/parser.go @@ -33,9 +33,12 @@ func Parse(buf []byte, version string) (*common.GpuInfo, error) { gpuItem.Temperature = s.Gpu[i].Temperature.GpuTemp gpuItem.PerformanceState = s.Gpu[i].PerformanceState - if version == "v12" { + if version == "v12" || version == "v13" { gpuItem.PowerDraw = s.Gpu[i].GpuPowerReadings.PowerDraw - gpuItem.MaxPowerLimit = s.Gpu[i].GpuPowerReadings.MaxPowerLimit + if len(gpuItem.PowerDraw) == 0 { + gpuItem.PowerDraw = s.Gpu[i].GpuPowerReadings.InstantPowerDraw + } + gpuItem.MaxPowerLimit = s.Gpu[i].GpuPowerReadings.CurrentPowerLimit } else { gpuItem.PowerDraw = s.Gpu[i].PowerReadings.PowerDraw gpuItem.MaxPowerLimit = s.Gpu[i].PowerReadings.MaxPowerLimit diff --git a/agent/utils/ai_tools/gpu/schema/types.go b/agent/utils/ai_tools/gpu/schema/types.go index 39328dd0c..7d5032427 100644 --- a/agent/utils/ai_tools/gpu/schema/types.go +++ b/agent/utils/ai_tools/gpu/schema/types.go @@ -108,6 +108,7 @@ type smi struct { } `xml:"gpu_operation_mode"` GpuPartNumber string `xml:"gpu_part_number"` GpuPowerReadings struct { + InstantPowerDraw string `xml:"instant_power_draw"` CurrentPowerLimit string `xml:"current_power_limit"` DefaultPowerLimit string `xml:"default_power_limit"` MaxPowerLimit string `xml:"max_power_limit"`