Files
p2p-rendering-computation/server/gpu.go
2021-04-11 01:26:55 +04:00

53 lines
979 B
Go

package server
import (
"encoding/xml"
"os/exec"
)
type Query struct {
DriveVersion string `xml:"driver_version"`
Gpu Gpu `xml:"gpu"`
}
type Gpu struct{
GpuName string `xml:"product_name"`
BiosVersion string `xml:"vbios_version"`
FanSpeed string `xml:"fan_speed"`
Utilization GpuUtilization `xml:"utilization"`
Temperature GpuTemperature `xml:"temperature"`
Clock GpuClock `xml:"clocks"`
}
type GpuUtilization struct {
GpuUsage string `xml:"gpu_util"`
MemoryUsage string `xml:"memory_util"`
}
type GpuTemperature struct {
GpuTemp string `xml:"gpu_temp"`
}
type GpuClock struct {
GpuClock string `xml:"graphics_clock"`
GpuMemClock string `xml:"mem_clock"`
}
// Gets GPU information by calling nvidia-smi
// in XML output
func GPUInfo()(*Query,error) {
out, err := exec.Command("nvidia-smi", "-q", "-x").Output()
if err != nil {
return nil,err
}
var gpu Query
err = xml.Unmarshal(out, &gpu)
if err != nil {
return nil,err
}
return &gpu,nil
}