45 lines
715 B
Go
45 lines
715 B
Go
//go:build linux
|
|
|
|
package stat
|
|
|
|
func getNvidiaStat() ([]float64, error) {
|
|
smi := &NvidiaSMI{
|
|
BinPath: "/usr/bin/nvidia-smi",
|
|
}
|
|
err1 := smi.Start()
|
|
if err1 != nil {
|
|
return nil, err1
|
|
}
|
|
data, err2 := smi.Gather()
|
|
if err2 != nil {
|
|
return nil, err2
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func getAMDStat() ([]float64, error) {
|
|
rsmi := &ROCmSMI{
|
|
BinPath: "/opt/rocm/bin/rocm-smi",
|
|
}
|
|
err1 := rsmi.Start()
|
|
if err1 != nil {
|
|
return nil, err1
|
|
}
|
|
data, err2 := rsmi.Gather()
|
|
if err2 != nil {
|
|
return nil, err2
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func GetGPUStat() (float64, error) {
|
|
gs, err := getNvidiaStat()
|
|
if err != nil {
|
|
gs, err = getAMDStat()
|
|
}
|
|
if err != nil || len(gs) == 0 {
|
|
return -1, err
|
|
}
|
|
return gs[0], nil
|
|
}
|