nvidia-container-toolkit/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go
dependabot[bot] 50dd460eaa Bump github.com/NVIDIA/go-nvml from 0.12.0-3 to 0.12.0-4
Bumps [github.com/NVIDIA/go-nvml](https://github.com/NVIDIA/go-nvml) from 0.12.0-3 to 0.12.0-4.
- [Commits](https://github.com/NVIDIA/go-nvml/compare/v0.12.0-3...v0.12.0-4)

---
updated-dependencies:
- dependency-name: github.com/NVIDIA/go-nvml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-18 14:53:37 +02:00

2726 lines
91 KiB
Go

// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package nvml
import (
"unsafe"
)
// EccBitType
type EccBitType = MemoryErrorType
// GpuInstanceInfo includes an interface type for Device instead of nvmlDevice
type GpuInstanceInfo struct {
Device Device
Id uint32
ProfileId uint32
Placement GpuInstancePlacement
}
func (g GpuInstanceInfo) convert() nvmlGpuInstanceInfo {
out := nvmlGpuInstanceInfo{
Device: g.Device.(nvmlDevice),
Id: g.Id,
ProfileId: g.ProfileId,
Placement: g.Placement,
}
return out
}
func (g nvmlGpuInstanceInfo) convert() GpuInstanceInfo {
out := GpuInstanceInfo{
Device: g.Device,
Id: g.Id,
ProfileId: g.ProfileId,
Placement: g.Placement,
}
return out
}
// ComputeInstanceInfo includes an interface type for Device instead of nvmlDevice
type ComputeInstanceInfo struct {
Device Device
GpuInstance GpuInstance
Id uint32
ProfileId uint32
Placement ComputeInstancePlacement
}
func (c ComputeInstanceInfo) convert() nvmlComputeInstanceInfo {
out := nvmlComputeInstanceInfo{
Device: c.Device.(nvmlDevice),
GpuInstance: c.GpuInstance.(nvmlGpuInstance),
Id: c.Id,
ProfileId: c.ProfileId,
Placement: c.Placement,
}
return out
}
func (c nvmlComputeInstanceInfo) convert() ComputeInstanceInfo {
out := ComputeInstanceInfo{
Device: c.Device,
GpuInstance: c.GpuInstance,
Id: c.Id,
ProfileId: c.ProfileId,
Placement: c.Placement,
}
return out
}
// nvml.DeviceGetCount()
func (l *library) DeviceGetCount() (int, Return) {
var deviceCount uint32
ret := nvmlDeviceGetCount(&deviceCount)
return int(deviceCount), ret
}
// nvml.DeviceGetHandleByIndex()
func (l *library) DeviceGetHandleByIndex(index int) (Device, Return) {
var device nvmlDevice
ret := nvmlDeviceGetHandleByIndex(uint32(index), &device)
return device, ret
}
// nvml.DeviceGetHandleBySerial()
func (l *library) DeviceGetHandleBySerial(serial string) (Device, Return) {
var device nvmlDevice
ret := nvmlDeviceGetHandleBySerial(serial+string(rune(0)), &device)
return device, ret
}
// nvml.DeviceGetHandleByUUID()
func (l *library) DeviceGetHandleByUUID(uuid string) (Device, Return) {
var device nvmlDevice
ret := nvmlDeviceGetHandleByUUID(uuid+string(rune(0)), &device)
return device, ret
}
// nvml.DeviceGetHandleByPciBusId()
func (l *library) DeviceGetHandleByPciBusId(pciBusId string) (Device, Return) {
var device nvmlDevice
ret := nvmlDeviceGetHandleByPciBusId(pciBusId+string(rune(0)), &device)
return device, ret
}
// nvml.DeviceGetName()
func (l *library) DeviceGetName(device Device) (string, Return) {
return device.GetName()
}
func (device nvmlDevice) GetName() (string, Return) {
name := make([]byte, DEVICE_NAME_V2_BUFFER_SIZE)
ret := nvmlDeviceGetName(device, &name[0], DEVICE_NAME_V2_BUFFER_SIZE)
return string(name[:clen(name)]), ret
}
// nvml.DeviceGetBrand()
func (l *library) DeviceGetBrand(device Device) (BrandType, Return) {
return device.GetBrand()
}
func (device nvmlDevice) GetBrand() (BrandType, Return) {
var brandType BrandType
ret := nvmlDeviceGetBrand(device, &brandType)
return brandType, ret
}
// nvml.DeviceGetIndex()
func (l *library) DeviceGetIndex(device Device) (int, Return) {
return device.GetIndex()
}
func (device nvmlDevice) GetIndex() (int, Return) {
var index uint32
ret := nvmlDeviceGetIndex(device, &index)
return int(index), ret
}
// nvml.DeviceGetSerial()
func (l *library) DeviceGetSerial(device Device) (string, Return) {
return device.GetSerial()
}
func (device nvmlDevice) GetSerial() (string, Return) {
serial := make([]byte, DEVICE_SERIAL_BUFFER_SIZE)
ret := nvmlDeviceGetSerial(device, &serial[0], DEVICE_SERIAL_BUFFER_SIZE)
return string(serial[:clen(serial)]), ret
}
// nvml.DeviceGetCpuAffinity()
func (l *library) DeviceGetCpuAffinity(device Device, numCPUs int) ([]uint, Return) {
return device.GetCpuAffinity(numCPUs)
}
func (device nvmlDevice) GetCpuAffinity(numCPUs int) ([]uint, Return) {
cpuSetSize := uint32((numCPUs-1)/int(unsafe.Sizeof(uint(0))) + 1)
cpuSet := make([]uint, cpuSetSize)
ret := nvmlDeviceGetCpuAffinity(device, cpuSetSize, &cpuSet[0])
return cpuSet, ret
}
// nvml.DeviceSetCpuAffinity()
func (l *library) DeviceSetCpuAffinity(device Device) Return {
return device.SetCpuAffinity()
}
func (device nvmlDevice) SetCpuAffinity() Return {
return nvmlDeviceSetCpuAffinity(device)
}
// nvml.DeviceClearCpuAffinity()
func (l *library) DeviceClearCpuAffinity(device Device) Return {
return device.ClearCpuAffinity()
}
func (device nvmlDevice) ClearCpuAffinity() Return {
return nvmlDeviceClearCpuAffinity(device)
}
// nvml.DeviceGetMemoryAffinity()
func (l *library) DeviceGetMemoryAffinity(device Device, numNodes int, scope AffinityScope) ([]uint, Return) {
return device.GetMemoryAffinity(numNodes, scope)
}
func (device nvmlDevice) GetMemoryAffinity(numNodes int, scope AffinityScope) ([]uint, Return) {
nodeSetSize := uint32((numNodes-1)/int(unsafe.Sizeof(uint(0))) + 1)
nodeSet := make([]uint, nodeSetSize)
ret := nvmlDeviceGetMemoryAffinity(device, nodeSetSize, &nodeSet[0], scope)
return nodeSet, ret
}
// nvml.DeviceGetCpuAffinityWithinScope()
func (l *library) DeviceGetCpuAffinityWithinScope(device Device, numCPUs int, scope AffinityScope) ([]uint, Return) {
return device.GetCpuAffinityWithinScope(numCPUs, scope)
}
func (device nvmlDevice) GetCpuAffinityWithinScope(numCPUs int, scope AffinityScope) ([]uint, Return) {
cpuSetSize := uint32((numCPUs-1)/int(unsafe.Sizeof(uint(0))) + 1)
cpuSet := make([]uint, cpuSetSize)
ret := nvmlDeviceGetCpuAffinityWithinScope(device, cpuSetSize, &cpuSet[0], scope)
return cpuSet, ret
}
// nvml.DeviceGetTopologyCommonAncestor()
func (l *library) DeviceGetTopologyCommonAncestor(device1 Device, device2 Device) (GpuTopologyLevel, Return) {
return device1.GetTopologyCommonAncestor(device2)
}
func (device1 nvmlDevice) GetTopologyCommonAncestor(device2 Device) (GpuTopologyLevel, Return) {
var pathInfo GpuTopologyLevel
ret := nvmlDeviceGetTopologyCommonAncestor(device1, device2.(nvmlDevice), &pathInfo)
return pathInfo, ret
}
// nvml.DeviceGetTopologyNearestGpus()
func (l *library) DeviceGetTopologyNearestGpus(device Device, level GpuTopologyLevel) ([]Device, Return) {
return device.GetTopologyNearestGpus(level)
}
func (device nvmlDevice) GetTopologyNearestGpus(level GpuTopologyLevel) ([]Device, Return) {
var count uint32
ret := nvmlDeviceGetTopologyNearestGpus(device, level, &count, nil)
if ret != SUCCESS {
return nil, ret
}
if count == 0 {
return []Device{}, ret
}
deviceArray := make([]nvmlDevice, count)
ret = nvmlDeviceGetTopologyNearestGpus(device, level, &count, &deviceArray[0])
return convertSlice[nvmlDevice, Device](deviceArray), ret
}
// nvml.DeviceGetP2PStatus()
func (l *library) DeviceGetP2PStatus(device1 Device, device2 Device, p2pIndex GpuP2PCapsIndex) (GpuP2PStatus, Return) {
return device1.GetP2PStatus(device2, p2pIndex)
}
func (device1 nvmlDevice) GetP2PStatus(device2 Device, p2pIndex GpuP2PCapsIndex) (GpuP2PStatus, Return) {
var p2pStatus GpuP2PStatus
ret := nvmlDeviceGetP2PStatus(device1, device2.(nvmlDevice), p2pIndex, &p2pStatus)
return p2pStatus, ret
}
// nvml.DeviceGetUUID()
func (l *library) DeviceGetUUID(device Device) (string, Return) {
return device.GetUUID()
}
func (device nvmlDevice) GetUUID() (string, Return) {
uuid := make([]byte, DEVICE_UUID_V2_BUFFER_SIZE)
ret := nvmlDeviceGetUUID(device, &uuid[0], DEVICE_UUID_V2_BUFFER_SIZE)
return string(uuid[:clen(uuid)]), ret
}
// nvml.DeviceGetMinorNumber()
func (l *library) DeviceGetMinorNumber(device Device) (int, Return) {
return device.GetMinorNumber()
}
func (device nvmlDevice) GetMinorNumber() (int, Return) {
var minorNumber uint32
ret := nvmlDeviceGetMinorNumber(device, &minorNumber)
return int(minorNumber), ret
}
// nvml.DeviceGetBoardPartNumber()
func (l *library) DeviceGetBoardPartNumber(device Device) (string, Return) {
return device.GetBoardPartNumber()
}
func (device nvmlDevice) GetBoardPartNumber() (string, Return) {
partNumber := make([]byte, DEVICE_PART_NUMBER_BUFFER_SIZE)
ret := nvmlDeviceGetBoardPartNumber(device, &partNumber[0], DEVICE_PART_NUMBER_BUFFER_SIZE)
return string(partNumber[:clen(partNumber)]), ret
}
// nvml.DeviceGetInforomVersion()
func (l *library) DeviceGetInforomVersion(device Device, object InforomObject) (string, Return) {
return device.GetInforomVersion(object)
}
func (device nvmlDevice) GetInforomVersion(object InforomObject) (string, Return) {
version := make([]byte, DEVICE_INFOROM_VERSION_BUFFER_SIZE)
ret := nvmlDeviceGetInforomVersion(device, object, &version[0], DEVICE_INFOROM_VERSION_BUFFER_SIZE)
return string(version[:clen(version)]), ret
}
// nvml.DeviceGetInforomImageVersion()
func (l *library) DeviceGetInforomImageVersion(device Device) (string, Return) {
return device.GetInforomImageVersion()
}
func (device nvmlDevice) GetInforomImageVersion() (string, Return) {
version := make([]byte, DEVICE_INFOROM_VERSION_BUFFER_SIZE)
ret := nvmlDeviceGetInforomImageVersion(device, &version[0], DEVICE_INFOROM_VERSION_BUFFER_SIZE)
return string(version[:clen(version)]), ret
}
// nvml.DeviceGetInforomConfigurationChecksum()
func (l *library) DeviceGetInforomConfigurationChecksum(device Device) (uint32, Return) {
return device.GetInforomConfigurationChecksum()
}
func (device nvmlDevice) GetInforomConfigurationChecksum() (uint32, Return) {
var checksum uint32
ret := nvmlDeviceGetInforomConfigurationChecksum(device, &checksum)
return checksum, ret
}
// nvml.DeviceValidateInforom()
func (l *library) DeviceValidateInforom(device Device) Return {
return device.ValidateInforom()
}
func (device nvmlDevice) ValidateInforom() Return {
return nvmlDeviceValidateInforom(device)
}
// nvml.DeviceGetDisplayMode()
func (l *library) DeviceGetDisplayMode(device Device) (EnableState, Return) {
return device.GetDisplayMode()
}
func (device nvmlDevice) GetDisplayMode() (EnableState, Return) {
var display EnableState
ret := nvmlDeviceGetDisplayMode(device, &display)
return display, ret
}
// nvml.DeviceGetDisplayActive()
func (l *library) DeviceGetDisplayActive(device Device) (EnableState, Return) {
return device.GetDisplayActive()
}
func (device nvmlDevice) GetDisplayActive() (EnableState, Return) {
var isActive EnableState
ret := nvmlDeviceGetDisplayActive(device, &isActive)
return isActive, ret
}
// nvml.DeviceGetPersistenceMode()
func (l *library) DeviceGetPersistenceMode(device Device) (EnableState, Return) {
return device.GetPersistenceMode()
}
func (device nvmlDevice) GetPersistenceMode() (EnableState, Return) {
var mode EnableState
ret := nvmlDeviceGetPersistenceMode(device, &mode)
return mode, ret
}
// nvml.DeviceGetPciInfo()
func (l *library) DeviceGetPciInfo(device Device) (PciInfo, Return) {
return device.GetPciInfo()
}
func (device nvmlDevice) GetPciInfo() (PciInfo, Return) {
var pci PciInfo
ret := nvmlDeviceGetPciInfo(device, &pci)
return pci, ret
}
// nvml.DeviceGetMaxPcieLinkGeneration()
func (l *library) DeviceGetMaxPcieLinkGeneration(device Device) (int, Return) {
return device.GetMaxPcieLinkGeneration()
}
func (device nvmlDevice) GetMaxPcieLinkGeneration() (int, Return) {
var maxLinkGen uint32
ret := nvmlDeviceGetMaxPcieLinkGeneration(device, &maxLinkGen)
return int(maxLinkGen), ret
}
// nvml.DeviceGetMaxPcieLinkWidth()
func (l *library) DeviceGetMaxPcieLinkWidth(device Device) (int, Return) {
return device.GetMaxPcieLinkWidth()
}
func (device nvmlDevice) GetMaxPcieLinkWidth() (int, Return) {
var maxLinkWidth uint32
ret := nvmlDeviceGetMaxPcieLinkWidth(device, &maxLinkWidth)
return int(maxLinkWidth), ret
}
// nvml.DeviceGetCurrPcieLinkGeneration()
func (l *library) DeviceGetCurrPcieLinkGeneration(device Device) (int, Return) {
return device.GetCurrPcieLinkGeneration()
}
func (device nvmlDevice) GetCurrPcieLinkGeneration() (int, Return) {
var currLinkGen uint32
ret := nvmlDeviceGetCurrPcieLinkGeneration(device, &currLinkGen)
return int(currLinkGen), ret
}
// nvml.DeviceGetCurrPcieLinkWidth()
func (l *library) DeviceGetCurrPcieLinkWidth(device Device) (int, Return) {
return device.GetCurrPcieLinkWidth()
}
func (device nvmlDevice) GetCurrPcieLinkWidth() (int, Return) {
var currLinkWidth uint32
ret := nvmlDeviceGetCurrPcieLinkWidth(device, &currLinkWidth)
return int(currLinkWidth), ret
}
// nvml.DeviceGetPcieThroughput()
func (l *library) DeviceGetPcieThroughput(device Device, counter PcieUtilCounter) (uint32, Return) {
return device.GetPcieThroughput(counter)
}
func (device nvmlDevice) GetPcieThroughput(counter PcieUtilCounter) (uint32, Return) {
var value uint32
ret := nvmlDeviceGetPcieThroughput(device, counter, &value)
return value, ret
}
// nvml.DeviceGetPcieReplayCounter()
func (l *library) DeviceGetPcieReplayCounter(device Device) (int, Return) {
return device.GetPcieReplayCounter()
}
func (device nvmlDevice) GetPcieReplayCounter() (int, Return) {
var value uint32
ret := nvmlDeviceGetPcieReplayCounter(device, &value)
return int(value), ret
}
// nvml.nvmlDeviceGetClockInfo()
func (l *library) DeviceGetClockInfo(device Device, clockType ClockType) (uint32, Return) {
return device.GetClockInfo(clockType)
}
func (device nvmlDevice) GetClockInfo(clockType ClockType) (uint32, Return) {
var clock uint32
ret := nvmlDeviceGetClockInfo(device, clockType, &clock)
return clock, ret
}
// nvml.DeviceGetMaxClockInfo()
func (l *library) DeviceGetMaxClockInfo(device Device, clockType ClockType) (uint32, Return) {
return device.GetMaxClockInfo(clockType)
}
func (device nvmlDevice) GetMaxClockInfo(clockType ClockType) (uint32, Return) {
var clock uint32
ret := nvmlDeviceGetMaxClockInfo(device, clockType, &clock)
return clock, ret
}
// nvml.DeviceGetApplicationsClock()
func (l *library) DeviceGetApplicationsClock(device Device, clockType ClockType) (uint32, Return) {
return device.GetApplicationsClock(clockType)
}
func (device nvmlDevice) GetApplicationsClock(clockType ClockType) (uint32, Return) {
var clockMHz uint32
ret := nvmlDeviceGetApplicationsClock(device, clockType, &clockMHz)
return clockMHz, ret
}
// nvml.DeviceGetDefaultApplicationsClock()
func (l *library) DeviceGetDefaultApplicationsClock(device Device, clockType ClockType) (uint32, Return) {
return device.GetDefaultApplicationsClock(clockType)
}
func (device nvmlDevice) GetDefaultApplicationsClock(clockType ClockType) (uint32, Return) {
var clockMHz uint32
ret := nvmlDeviceGetDefaultApplicationsClock(device, clockType, &clockMHz)
return clockMHz, ret
}
// nvml.DeviceResetApplicationsClocks()
func (l *library) DeviceResetApplicationsClocks(device Device) Return {
return device.ResetApplicationsClocks()
}
func (device nvmlDevice) ResetApplicationsClocks() Return {
return nvmlDeviceResetApplicationsClocks(device)
}
// nvml.DeviceGetClock()
func (l *library) DeviceGetClock(device Device, clockType ClockType, clockId ClockId) (uint32, Return) {
return device.GetClock(clockType, clockId)
}
func (device nvmlDevice) GetClock(clockType ClockType, clockId ClockId) (uint32, Return) {
var clockMHz uint32
ret := nvmlDeviceGetClock(device, clockType, clockId, &clockMHz)
return clockMHz, ret
}
// nvml.DeviceGetMaxCustomerBoostClock()
func (l *library) DeviceGetMaxCustomerBoostClock(device Device, clockType ClockType) (uint32, Return) {
return device.GetMaxCustomerBoostClock(clockType)
}
func (device nvmlDevice) GetMaxCustomerBoostClock(clockType ClockType) (uint32, Return) {
var clockMHz uint32
ret := nvmlDeviceGetMaxCustomerBoostClock(device, clockType, &clockMHz)
return clockMHz, ret
}
// nvml.DeviceGetSupportedMemoryClocks()
func (l *library) DeviceGetSupportedMemoryClocks(device Device) (int, uint32, Return) {
return device.GetSupportedMemoryClocks()
}
func (device nvmlDevice) GetSupportedMemoryClocks() (int, uint32, Return) {
var count, clocksMHz uint32
ret := nvmlDeviceGetSupportedMemoryClocks(device, &count, &clocksMHz)
return int(count), clocksMHz, ret
}
// nvml.DeviceGetSupportedGraphicsClocks()
func (l *library) DeviceGetSupportedGraphicsClocks(device Device, memoryClockMHz int) (int, uint32, Return) {
return device.GetSupportedGraphicsClocks(memoryClockMHz)
}
func (device nvmlDevice) GetSupportedGraphicsClocks(memoryClockMHz int) (int, uint32, Return) {
var count, clocksMHz uint32
ret := nvmlDeviceGetSupportedGraphicsClocks(device, uint32(memoryClockMHz), &count, &clocksMHz)
return int(count), clocksMHz, ret
}
// nvml.DeviceGetAutoBoostedClocksEnabled()
func (l *library) DeviceGetAutoBoostedClocksEnabled(device Device) (EnableState, EnableState, Return) {
return device.GetAutoBoostedClocksEnabled()
}
func (device nvmlDevice) GetAutoBoostedClocksEnabled() (EnableState, EnableState, Return) {
var isEnabled, defaultIsEnabled EnableState
ret := nvmlDeviceGetAutoBoostedClocksEnabled(device, &isEnabled, &defaultIsEnabled)
return isEnabled, defaultIsEnabled, ret
}
// nvml.DeviceSetAutoBoostedClocksEnabled()
func (l *library) DeviceSetAutoBoostedClocksEnabled(device Device, enabled EnableState) Return {
return device.SetAutoBoostedClocksEnabled(enabled)
}
func (device nvmlDevice) SetAutoBoostedClocksEnabled(enabled EnableState) Return {
return nvmlDeviceSetAutoBoostedClocksEnabled(device, enabled)
}
// nvml.DeviceSetDefaultAutoBoostedClocksEnabled()
func (l *library) DeviceSetDefaultAutoBoostedClocksEnabled(device Device, enabled EnableState, flags uint32) Return {
return device.SetDefaultAutoBoostedClocksEnabled(enabled, flags)
}
func (device nvmlDevice) SetDefaultAutoBoostedClocksEnabled(enabled EnableState, flags uint32) Return {
return nvmlDeviceSetDefaultAutoBoostedClocksEnabled(device, enabled, flags)
}
// nvml.DeviceGetFanSpeed()
func (l *library) DeviceGetFanSpeed(device Device) (uint32, Return) {
return device.GetFanSpeed()
}
func (device nvmlDevice) GetFanSpeed() (uint32, Return) {
var speed uint32
ret := nvmlDeviceGetFanSpeed(device, &speed)
return speed, ret
}
// nvml.DeviceGetFanSpeed_v2()
func (l *library) DeviceGetFanSpeed_v2(device Device, fan int) (uint32, Return) {
return device.GetFanSpeed_v2(fan)
}
func (device nvmlDevice) GetFanSpeed_v2(fan int) (uint32, Return) {
var speed uint32
ret := nvmlDeviceGetFanSpeed_v2(device, uint32(fan), &speed)
return speed, ret
}
// nvml.DeviceGetNumFans()
func (l *library) DeviceGetNumFans(device Device) (int, Return) {
return device.GetNumFans()
}
func (device nvmlDevice) GetNumFans() (int, Return) {
var numFans uint32
ret := nvmlDeviceGetNumFans(device, &numFans)
return int(numFans), ret
}
// nvml.DeviceGetTemperature()
func (l *library) DeviceGetTemperature(device Device, sensorType TemperatureSensors) (uint32, Return) {
return device.GetTemperature(sensorType)
}
func (device nvmlDevice) GetTemperature(sensorType TemperatureSensors) (uint32, Return) {
var temp uint32
ret := nvmlDeviceGetTemperature(device, sensorType, &temp)
return temp, ret
}
// nvml.DeviceGetTemperatureThreshold()
func (l *library) DeviceGetTemperatureThreshold(device Device, thresholdType TemperatureThresholds) (uint32, Return) {
return device.GetTemperatureThreshold(thresholdType)
}
func (device nvmlDevice) GetTemperatureThreshold(thresholdType TemperatureThresholds) (uint32, Return) {
var temp uint32
ret := nvmlDeviceGetTemperatureThreshold(device, thresholdType, &temp)
return temp, ret
}
// nvml.DeviceSetTemperatureThreshold()
func (l *library) DeviceSetTemperatureThreshold(device Device, thresholdType TemperatureThresholds, temp int) Return {
return device.SetTemperatureThreshold(thresholdType, temp)
}
func (device nvmlDevice) SetTemperatureThreshold(thresholdType TemperatureThresholds, temp int) Return {
t := int32(temp)
ret := nvmlDeviceSetTemperatureThreshold(device, thresholdType, &t)
return ret
}
// nvml.DeviceGetPerformanceState()
func (l *library) DeviceGetPerformanceState(device Device) (Pstates, Return) {
return device.GetPerformanceState()
}
func (device nvmlDevice) GetPerformanceState() (Pstates, Return) {
var pState Pstates
ret := nvmlDeviceGetPerformanceState(device, &pState)
return pState, ret
}
// nvml.DeviceGetCurrentClocksThrottleReasons()
func (l *library) DeviceGetCurrentClocksThrottleReasons(device Device) (uint64, Return) {
return device.GetCurrentClocksThrottleReasons()
}
func (device nvmlDevice) GetCurrentClocksThrottleReasons() (uint64, Return) {
var clocksThrottleReasons uint64
ret := nvmlDeviceGetCurrentClocksThrottleReasons(device, &clocksThrottleReasons)
return clocksThrottleReasons, ret
}
// nvml.DeviceGetSupportedClocksThrottleReasons()
func (l *library) DeviceGetSupportedClocksThrottleReasons(device Device) (uint64, Return) {
return device.GetSupportedClocksThrottleReasons()
}
func (device nvmlDevice) GetSupportedClocksThrottleReasons() (uint64, Return) {
var supportedClocksThrottleReasons uint64
ret := nvmlDeviceGetSupportedClocksThrottleReasons(device, &supportedClocksThrottleReasons)
return supportedClocksThrottleReasons, ret
}
// nvml.DeviceGetPowerState()
func (l *library) DeviceGetPowerState(device Device) (Pstates, Return) {
return device.GetPowerState()
}
func (device nvmlDevice) GetPowerState() (Pstates, Return) {
var pState Pstates
ret := nvmlDeviceGetPowerState(device, &pState)
return pState, ret
}
// nvml.DeviceGetPowerManagementMode()
func (l *library) DeviceGetPowerManagementMode(device Device) (EnableState, Return) {
return device.GetPowerManagementMode()
}
func (device nvmlDevice) GetPowerManagementMode() (EnableState, Return) {
var mode EnableState
ret := nvmlDeviceGetPowerManagementMode(device, &mode)
return mode, ret
}
// nvml.DeviceGetPowerManagementLimit()
func (l *library) DeviceGetPowerManagementLimit(device Device) (uint32, Return) {
return device.GetPowerManagementLimit()
}
func (device nvmlDevice) GetPowerManagementLimit() (uint32, Return) {
var limit uint32
ret := nvmlDeviceGetPowerManagementLimit(device, &limit)
return limit, ret
}
// nvml.DeviceGetPowerManagementLimitConstraints()
func (l *library) DeviceGetPowerManagementLimitConstraints(device Device) (uint32, uint32, Return) {
return device.GetPowerManagementLimitConstraints()
}
func (device nvmlDevice) GetPowerManagementLimitConstraints() (uint32, uint32, Return) {
var minLimit, maxLimit uint32
ret := nvmlDeviceGetPowerManagementLimitConstraints(device, &minLimit, &maxLimit)
return minLimit, maxLimit, ret
}
// nvml.DeviceGetPowerManagementDefaultLimit()
func (l *library) DeviceGetPowerManagementDefaultLimit(device Device) (uint32, Return) {
return device.GetPowerManagementDefaultLimit()
}
func (device nvmlDevice) GetPowerManagementDefaultLimit() (uint32, Return) {
var defaultLimit uint32
ret := nvmlDeviceGetPowerManagementDefaultLimit(device, &defaultLimit)
return defaultLimit, ret
}
// nvml.DeviceGetPowerUsage()
func (l *library) DeviceGetPowerUsage(device Device) (uint32, Return) {
return device.GetPowerUsage()
}
func (device nvmlDevice) GetPowerUsage() (uint32, Return) {
var power uint32
ret := nvmlDeviceGetPowerUsage(device, &power)
return power, ret
}
// nvml.DeviceGetTotalEnergyConsumption()
func (l *library) DeviceGetTotalEnergyConsumption(device Device) (uint64, Return) {
return device.GetTotalEnergyConsumption()
}
func (device nvmlDevice) GetTotalEnergyConsumption() (uint64, Return) {
var energy uint64
ret := nvmlDeviceGetTotalEnergyConsumption(device, &energy)
return energy, ret
}
// nvml.DeviceGetEnforcedPowerLimit()
func (l *library) DeviceGetEnforcedPowerLimit(device Device) (uint32, Return) {
return device.GetEnforcedPowerLimit()
}
func (device nvmlDevice) GetEnforcedPowerLimit() (uint32, Return) {
var limit uint32
ret := nvmlDeviceGetEnforcedPowerLimit(device, &limit)
return limit, ret
}
// nvml.DeviceGetGpuOperationMode()
func (l *library) DeviceGetGpuOperationMode(device Device) (GpuOperationMode, GpuOperationMode, Return) {
return device.GetGpuOperationMode()
}
func (device nvmlDevice) GetGpuOperationMode() (GpuOperationMode, GpuOperationMode, Return) {
var current, pending GpuOperationMode
ret := nvmlDeviceGetGpuOperationMode(device, &current, &pending)
return current, pending, ret
}
// nvml.DeviceGetMemoryInfo()
func (l *library) DeviceGetMemoryInfo(device Device) (Memory, Return) {
return device.GetMemoryInfo()
}
func (device nvmlDevice) GetMemoryInfo() (Memory, Return) {
var memory Memory
ret := nvmlDeviceGetMemoryInfo(device, &memory)
return memory, ret
}
// nvml.DeviceGetMemoryInfo_v2()
func (l *library) DeviceGetMemoryInfo_v2(device Device) (Memory_v2, Return) {
return device.GetMemoryInfo_v2()
}
func (device nvmlDevice) GetMemoryInfo_v2() (Memory_v2, Return) {
var memory Memory_v2
memory.Version = STRUCT_VERSION(memory, 2)
ret := nvmlDeviceGetMemoryInfo_v2(device, &memory)
return memory, ret
}
// nvml.DeviceGetComputeMode()
func (l *library) DeviceGetComputeMode(device Device) (ComputeMode, Return) {
return device.GetComputeMode()
}
func (device nvmlDevice) GetComputeMode() (ComputeMode, Return) {
var mode ComputeMode
ret := nvmlDeviceGetComputeMode(device, &mode)
return mode, ret
}
// nvml.DeviceGetCudaComputeCapability()
func (l *library) DeviceGetCudaComputeCapability(device Device) (int, int, Return) {
return device.GetCudaComputeCapability()
}
func (device nvmlDevice) GetCudaComputeCapability() (int, int, Return) {
var major, minor int32
ret := nvmlDeviceGetCudaComputeCapability(device, &major, &minor)
return int(major), int(minor), ret
}
// nvml.DeviceGetEccMode()
func (l *library) DeviceGetEccMode(device Device) (EnableState, EnableState, Return) {
return device.GetEccMode()
}
func (device nvmlDevice) GetEccMode() (EnableState, EnableState, Return) {
var current, pending EnableState
ret := nvmlDeviceGetEccMode(device, &current, &pending)
return current, pending, ret
}
// nvml.DeviceGetBoardId()
func (l *library) DeviceGetBoardId(device Device) (uint32, Return) {
return device.GetBoardId()
}
func (device nvmlDevice) GetBoardId() (uint32, Return) {
var boardId uint32
ret := nvmlDeviceGetBoardId(device, &boardId)
return boardId, ret
}
// nvml.DeviceGetMultiGpuBoard()
func (l *library) DeviceGetMultiGpuBoard(device Device) (int, Return) {
return device.GetMultiGpuBoard()
}
func (device nvmlDevice) GetMultiGpuBoard() (int, Return) {
var multiGpuBool uint32
ret := nvmlDeviceGetMultiGpuBoard(device, &multiGpuBool)
return int(multiGpuBool), ret
}
// nvml.DeviceGetTotalEccErrors()
func (l *library) DeviceGetTotalEccErrors(device Device, errorType MemoryErrorType, counterType EccCounterType) (uint64, Return) {
return device.GetTotalEccErrors(errorType, counterType)
}
func (device nvmlDevice) GetTotalEccErrors(errorType MemoryErrorType, counterType EccCounterType) (uint64, Return) {
var eccCounts uint64
ret := nvmlDeviceGetTotalEccErrors(device, errorType, counterType, &eccCounts)
return eccCounts, ret
}
// nvml.DeviceGetDetailedEccErrors()
func (l *library) DeviceGetDetailedEccErrors(device Device, errorType MemoryErrorType, counterType EccCounterType) (EccErrorCounts, Return) {
return device.GetDetailedEccErrors(errorType, counterType)
}
func (device nvmlDevice) GetDetailedEccErrors(errorType MemoryErrorType, counterType EccCounterType) (EccErrorCounts, Return) {
var eccCounts EccErrorCounts
ret := nvmlDeviceGetDetailedEccErrors(device, errorType, counterType, &eccCounts)
return eccCounts, ret
}
// nvml.DeviceGetMemoryErrorCounter()
func (l *library) DeviceGetMemoryErrorCounter(device Device, errorType MemoryErrorType, counterType EccCounterType, locationType MemoryLocation) (uint64, Return) {
return device.GetMemoryErrorCounter(errorType, counterType, locationType)
}
func (device nvmlDevice) GetMemoryErrorCounter(errorType MemoryErrorType, counterType EccCounterType, locationType MemoryLocation) (uint64, Return) {
var count uint64
ret := nvmlDeviceGetMemoryErrorCounter(device, errorType, counterType, locationType, &count)
return count, ret
}
// nvml.DeviceGetUtilizationRates()
func (l *library) DeviceGetUtilizationRates(device Device) (Utilization, Return) {
return device.GetUtilizationRates()
}
func (device nvmlDevice) GetUtilizationRates() (Utilization, Return) {
var utilization Utilization
ret := nvmlDeviceGetUtilizationRates(device, &utilization)
return utilization, ret
}
// nvml.DeviceGetEncoderUtilization()
func (l *library) DeviceGetEncoderUtilization(device Device) (uint32, uint32, Return) {
return device.GetEncoderUtilization()
}
func (device nvmlDevice) GetEncoderUtilization() (uint32, uint32, Return) {
var utilization, samplingPeriodUs uint32
ret := nvmlDeviceGetEncoderUtilization(device, &utilization, &samplingPeriodUs)
return utilization, samplingPeriodUs, ret
}
// nvml.DeviceGetEncoderCapacity()
func (l *library) DeviceGetEncoderCapacity(device Device, encoderQueryType EncoderType) (int, Return) {
return device.GetEncoderCapacity(encoderQueryType)
}
func (device nvmlDevice) GetEncoderCapacity(encoderQueryType EncoderType) (int, Return) {
var encoderCapacity uint32
ret := nvmlDeviceGetEncoderCapacity(device, encoderQueryType, &encoderCapacity)
return int(encoderCapacity), ret
}
// nvml.DeviceGetEncoderStats()
func (l *library) DeviceGetEncoderStats(device Device) (int, uint32, uint32, Return) {
return device.GetEncoderStats()
}
func (device nvmlDevice) GetEncoderStats() (int, uint32, uint32, Return) {
var sessionCount, averageFps, averageLatency uint32
ret := nvmlDeviceGetEncoderStats(device, &sessionCount, &averageFps, &averageLatency)
return int(sessionCount), averageFps, averageLatency, ret
}
// nvml.DeviceGetEncoderSessions()
func (l *library) DeviceGetEncoderSessions(device Device) ([]EncoderSessionInfo, Return) {
return device.GetEncoderSessions()
}
func (device nvmlDevice) GetEncoderSessions() ([]EncoderSessionInfo, Return) {
var sessionCount uint32 = 1 // Will be reduced upon returning
for {
sessionInfos := make([]EncoderSessionInfo, sessionCount)
ret := nvmlDeviceGetEncoderSessions(device, &sessionCount, &sessionInfos[0])
if ret == SUCCESS {
return sessionInfos[:sessionCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
sessionCount *= 2
}
}
// nvml.DeviceGetDecoderUtilization()
func (l *library) DeviceGetDecoderUtilization(device Device) (uint32, uint32, Return) {
return device.GetDecoderUtilization()
}
func (device nvmlDevice) GetDecoderUtilization() (uint32, uint32, Return) {
var utilization, samplingPeriodUs uint32
ret := nvmlDeviceGetDecoderUtilization(device, &utilization, &samplingPeriodUs)
return utilization, samplingPeriodUs, ret
}
// nvml.DeviceGetFBCStats()
func (l *library) DeviceGetFBCStats(device Device) (FBCStats, Return) {
return device.GetFBCStats()
}
func (device nvmlDevice) GetFBCStats() (FBCStats, Return) {
var fbcStats FBCStats
ret := nvmlDeviceGetFBCStats(device, &fbcStats)
return fbcStats, ret
}
// nvml.DeviceGetFBCSessions()
func (l *library) DeviceGetFBCSessions(device Device) ([]FBCSessionInfo, Return) {
return device.GetFBCSessions()
}
func (device nvmlDevice) GetFBCSessions() ([]FBCSessionInfo, Return) {
var sessionCount uint32 = 1 // Will be reduced upon returning
for {
sessionInfo := make([]FBCSessionInfo, sessionCount)
ret := nvmlDeviceGetFBCSessions(device, &sessionCount, &sessionInfo[0])
if ret == SUCCESS {
return sessionInfo[:sessionCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
sessionCount *= 2
}
}
// nvml.DeviceGetDriverModel()
func (l *library) DeviceGetDriverModel(device Device) (DriverModel, DriverModel, Return) {
return device.GetDriverModel()
}
func (device nvmlDevice) GetDriverModel() (DriverModel, DriverModel, Return) {
var current, pending DriverModel
ret := nvmlDeviceGetDriverModel(device, &current, &pending)
return current, pending, ret
}
// nvml.DeviceGetVbiosVersion()
func (l *library) DeviceGetVbiosVersion(device Device) (string, Return) {
return device.GetVbiosVersion()
}
func (device nvmlDevice) GetVbiosVersion() (string, Return) {
version := make([]byte, DEVICE_VBIOS_VERSION_BUFFER_SIZE)
ret := nvmlDeviceGetVbiosVersion(device, &version[0], DEVICE_VBIOS_VERSION_BUFFER_SIZE)
return string(version[:clen(version)]), ret
}
// nvml.DeviceGetBridgeChipInfo()
func (l *library) DeviceGetBridgeChipInfo(device Device) (BridgeChipHierarchy, Return) {
return device.GetBridgeChipInfo()
}
func (device nvmlDevice) GetBridgeChipInfo() (BridgeChipHierarchy, Return) {
var bridgeHierarchy BridgeChipHierarchy
ret := nvmlDeviceGetBridgeChipInfo(device, &bridgeHierarchy)
return bridgeHierarchy, ret
}
// nvml.DeviceGetComputeRunningProcesses()
func deviceGetComputeRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v1, infoCount)
ret := nvmlDeviceGetComputeRunningProcesses_v1(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetComputeRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v2, infoCount)
ret := nvmlDeviceGetComputeRunningProcesses_v2(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetComputeRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo, infoCount)
ret := nvmlDeviceGetComputeRunningProcesses_v3(device, &infoCount, &infos[0])
if ret == SUCCESS {
return infos[:infoCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func (l *library) DeviceGetComputeRunningProcesses(device Device) ([]ProcessInfo, Return) {
return device.GetComputeRunningProcesses()
}
func (device nvmlDevice) GetComputeRunningProcesses() ([]ProcessInfo, Return) {
return deviceGetComputeRunningProcesses(device)
}
// nvml.DeviceGetGraphicsRunningProcesses()
func deviceGetGraphicsRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v1, infoCount)
ret := nvmlDeviceGetGraphicsRunningProcesses_v1(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetGraphicsRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v2, infoCount)
ret := nvmlDeviceGetGraphicsRunningProcesses_v2(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetGraphicsRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo, infoCount)
ret := nvmlDeviceGetGraphicsRunningProcesses_v3(device, &infoCount, &infos[0])
if ret == SUCCESS {
return infos[:infoCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func (l *library) DeviceGetGraphicsRunningProcesses(device Device) ([]ProcessInfo, Return) {
return device.GetGraphicsRunningProcesses()
}
func (device nvmlDevice) GetGraphicsRunningProcesses() ([]ProcessInfo, Return) {
return deviceGetGraphicsRunningProcesses(device)
}
// nvml.DeviceGetMPSComputeRunningProcesses()
func deviceGetMPSComputeRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v1, infoCount)
ret := nvmlDeviceGetMPSComputeRunningProcesses_v1(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetMPSComputeRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo_v2, infoCount)
ret := nvmlDeviceGetMPSComputeRunningProcesses_v2(device, &infoCount, &infos[0])
if ret == SUCCESS {
return ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func deviceGetMPSComputeRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {
var infoCount uint32 = 1 // Will be reduced upon returning
for {
infos := make([]ProcessInfo, infoCount)
ret := nvmlDeviceGetMPSComputeRunningProcesses_v3(device, &infoCount, &infos[0])
if ret == SUCCESS {
return infos[:infoCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
infoCount *= 2
}
}
func (l *library) DeviceGetMPSComputeRunningProcesses(device Device) ([]ProcessInfo, Return) {
return device.GetMPSComputeRunningProcesses()
}
func (device nvmlDevice) GetMPSComputeRunningProcesses() ([]ProcessInfo, Return) {
return deviceGetMPSComputeRunningProcesses(device)
}
// nvml.DeviceOnSameBoard()
func (l *library) DeviceOnSameBoard(device1 Device, device2 Device) (int, Return) {
return device1.OnSameBoard(device2)
}
func (device1 nvmlDevice) OnSameBoard(device2 Device) (int, Return) {
var onSameBoard int32
ret := nvmlDeviceOnSameBoard(device1, device2.(nvmlDevice), &onSameBoard)
return int(onSameBoard), ret
}
// nvml.DeviceGetAPIRestriction()
func (l *library) DeviceGetAPIRestriction(device Device, apiType RestrictedAPI) (EnableState, Return) {
return device.GetAPIRestriction(apiType)
}
func (device nvmlDevice) GetAPIRestriction(apiType RestrictedAPI) (EnableState, Return) {
var isRestricted EnableState
ret := nvmlDeviceGetAPIRestriction(device, apiType, &isRestricted)
return isRestricted, ret
}
// nvml.DeviceGetSamples()
func (l *library) DeviceGetSamples(device Device, samplingType SamplingType, lastSeenTimestamp uint64) (ValueType, []Sample, Return) {
return device.GetSamples(samplingType, lastSeenTimestamp)
}
func (device nvmlDevice) GetSamples(samplingType SamplingType, lastSeenTimestamp uint64) (ValueType, []Sample, Return) {
var sampleValType ValueType
var sampleCount uint32
ret := nvmlDeviceGetSamples(device, samplingType, lastSeenTimestamp, &sampleValType, &sampleCount, nil)
if ret != SUCCESS {
return sampleValType, nil, ret
}
if sampleCount == 0 {
return sampleValType, []Sample{}, ret
}
samples := make([]Sample, sampleCount)
ret = nvmlDeviceGetSamples(device, samplingType, lastSeenTimestamp, &sampleValType, &sampleCount, &samples[0])
return sampleValType, samples, ret
}
// nvml.DeviceGetBAR1MemoryInfo()
func (l *library) DeviceGetBAR1MemoryInfo(device Device) (BAR1Memory, Return) {
return device.GetBAR1MemoryInfo()
}
func (device nvmlDevice) GetBAR1MemoryInfo() (BAR1Memory, Return) {
var bar1Memory BAR1Memory
ret := nvmlDeviceGetBAR1MemoryInfo(device, &bar1Memory)
return bar1Memory, ret
}
// nvml.DeviceGetViolationStatus()
func (l *library) DeviceGetViolationStatus(device Device, perfPolicyType PerfPolicyType) (ViolationTime, Return) {
return device.GetViolationStatus(perfPolicyType)
}
func (device nvmlDevice) GetViolationStatus(perfPolicyType PerfPolicyType) (ViolationTime, Return) {
var violTime ViolationTime
ret := nvmlDeviceGetViolationStatus(device, perfPolicyType, &violTime)
return violTime, ret
}
// nvml.DeviceGetIrqNum()
func (l *library) DeviceGetIrqNum(device Device) (int, Return) {
return device.GetIrqNum()
}
func (device nvmlDevice) GetIrqNum() (int, Return) {
var irqNum uint32
ret := nvmlDeviceGetIrqNum(device, &irqNum)
return int(irqNum), ret
}
// nvml.DeviceGetNumGpuCores()
func (l *library) DeviceGetNumGpuCores(device Device) (int, Return) {
return device.GetNumGpuCores()
}
func (device nvmlDevice) GetNumGpuCores() (int, Return) {
var numCores uint32
ret := nvmlDeviceGetNumGpuCores(device, &numCores)
return int(numCores), ret
}
// nvml.DeviceGetPowerSource()
func (l *library) DeviceGetPowerSource(device Device) (PowerSource, Return) {
return device.GetPowerSource()
}
func (device nvmlDevice) GetPowerSource() (PowerSource, Return) {
var powerSource PowerSource
ret := nvmlDeviceGetPowerSource(device, &powerSource)
return powerSource, ret
}
// nvml.DeviceGetMemoryBusWidth()
func (l *library) DeviceGetMemoryBusWidth(device Device) (uint32, Return) {
return device.GetMemoryBusWidth()
}
func (device nvmlDevice) GetMemoryBusWidth() (uint32, Return) {
var busWidth uint32
ret := nvmlDeviceGetMemoryBusWidth(device, &busWidth)
return busWidth, ret
}
// nvml.DeviceGetPcieLinkMaxSpeed()
func (l *library) DeviceGetPcieLinkMaxSpeed(device Device) (uint32, Return) {
return device.GetPcieLinkMaxSpeed()
}
func (device nvmlDevice) GetPcieLinkMaxSpeed() (uint32, Return) {
var maxSpeed uint32
ret := nvmlDeviceGetPcieLinkMaxSpeed(device, &maxSpeed)
return maxSpeed, ret
}
// nvml.DeviceGetAdaptiveClockInfoStatus()
func (l *library) DeviceGetAdaptiveClockInfoStatus(device Device) (uint32, Return) {
return device.GetAdaptiveClockInfoStatus()
}
func (device nvmlDevice) GetAdaptiveClockInfoStatus() (uint32, Return) {
var adaptiveClockStatus uint32
ret := nvmlDeviceGetAdaptiveClockInfoStatus(device, &adaptiveClockStatus)
return adaptiveClockStatus, ret
}
// nvml.DeviceGetAccountingMode()
func (l *library) DeviceGetAccountingMode(device Device) (EnableState, Return) {
return device.GetAccountingMode()
}
func (device nvmlDevice) GetAccountingMode() (EnableState, Return) {
var mode EnableState
ret := nvmlDeviceGetAccountingMode(device, &mode)
return mode, ret
}
// nvml.DeviceGetAccountingStats()
func (l *library) DeviceGetAccountingStats(device Device, pid uint32) (AccountingStats, Return) {
return device.GetAccountingStats(pid)
}
func (device nvmlDevice) GetAccountingStats(pid uint32) (AccountingStats, Return) {
var stats AccountingStats
ret := nvmlDeviceGetAccountingStats(device, pid, &stats)
return stats, ret
}
// nvml.DeviceGetAccountingPids()
func (l *library) DeviceGetAccountingPids(device Device) ([]int, Return) {
return device.GetAccountingPids()
}
func (device nvmlDevice) GetAccountingPids() ([]int, Return) {
var count uint32 = 1 // Will be reduced upon returning
for {
pids := make([]uint32, count)
ret := nvmlDeviceGetAccountingPids(device, &count, &pids[0])
if ret == SUCCESS {
return uint32SliceToIntSlice(pids[:count]), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
count *= 2
}
}
// nvml.DeviceGetAccountingBufferSize()
func (l *library) DeviceGetAccountingBufferSize(device Device) (int, Return) {
return device.GetAccountingBufferSize()
}
func (device nvmlDevice) GetAccountingBufferSize() (int, Return) {
var bufferSize uint32
ret := nvmlDeviceGetAccountingBufferSize(device, &bufferSize)
return int(bufferSize), ret
}
// nvml.DeviceGetRetiredPages()
func (l *library) DeviceGetRetiredPages(device Device, cause PageRetirementCause) ([]uint64, Return) {
return device.GetRetiredPages(cause)
}
func (device nvmlDevice) GetRetiredPages(cause PageRetirementCause) ([]uint64, Return) {
var pageCount uint32 = 1 // Will be reduced upon returning
for {
addresses := make([]uint64, pageCount)
ret := nvmlDeviceGetRetiredPages(device, cause, &pageCount, &addresses[0])
if ret == SUCCESS {
return addresses[:pageCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
pageCount *= 2
}
}
// nvml.DeviceGetRetiredPages_v2()
func (l *library) DeviceGetRetiredPages_v2(device Device, cause PageRetirementCause) ([]uint64, []uint64, Return) {
return device.GetRetiredPages_v2(cause)
}
func (device nvmlDevice) GetRetiredPages_v2(cause PageRetirementCause) ([]uint64, []uint64, Return) {
var pageCount uint32 = 1 // Will be reduced upon returning
for {
addresses := make([]uint64, pageCount)
timestamps := make([]uint64, pageCount)
ret := nvmlDeviceGetRetiredPages_v2(device, cause, &pageCount, &addresses[0], &timestamps[0])
if ret == SUCCESS {
return addresses[:pageCount], timestamps[:pageCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, nil, ret
}
pageCount *= 2
}
}
// nvml.DeviceGetRetiredPagesPendingStatus()
func (l *library) DeviceGetRetiredPagesPendingStatus(device Device) (EnableState, Return) {
return device.GetRetiredPagesPendingStatus()
}
func (device nvmlDevice) GetRetiredPagesPendingStatus() (EnableState, Return) {
var isPending EnableState
ret := nvmlDeviceGetRetiredPagesPendingStatus(device, &isPending)
return isPending, ret
}
// nvml.DeviceSetPersistenceMode()
func (l *library) DeviceSetPersistenceMode(device Device, mode EnableState) Return {
return device.SetPersistenceMode(mode)
}
func (device nvmlDevice) SetPersistenceMode(mode EnableState) Return {
return nvmlDeviceSetPersistenceMode(device, mode)
}
// nvml.DeviceSetComputeMode()
func (l *library) DeviceSetComputeMode(device Device, mode ComputeMode) Return {
return device.SetComputeMode(mode)
}
func (device nvmlDevice) SetComputeMode(mode ComputeMode) Return {
return nvmlDeviceSetComputeMode(device, mode)
}
// nvml.DeviceSetEccMode()
func (l *library) DeviceSetEccMode(device Device, ecc EnableState) Return {
return device.SetEccMode(ecc)
}
func (device nvmlDevice) SetEccMode(ecc EnableState) Return {
return nvmlDeviceSetEccMode(device, ecc)
}
// nvml.DeviceClearEccErrorCounts()
func (l *library) DeviceClearEccErrorCounts(device Device, counterType EccCounterType) Return {
return device.ClearEccErrorCounts(counterType)
}
func (device nvmlDevice) ClearEccErrorCounts(counterType EccCounterType) Return {
return nvmlDeviceClearEccErrorCounts(device, counterType)
}
// nvml.DeviceSetDriverModel()
func (l *library) DeviceSetDriverModel(device Device, driverModel DriverModel, flags uint32) Return {
return device.SetDriverModel(driverModel, flags)
}
func (device nvmlDevice) SetDriverModel(driverModel DriverModel, flags uint32) Return {
return nvmlDeviceSetDriverModel(device, driverModel, flags)
}
// nvml.DeviceSetGpuLockedClocks()
func (l *library) DeviceSetGpuLockedClocks(device Device, minGpuClockMHz uint32, maxGpuClockMHz uint32) Return {
return device.SetGpuLockedClocks(minGpuClockMHz, maxGpuClockMHz)
}
func (device nvmlDevice) SetGpuLockedClocks(minGpuClockMHz uint32, maxGpuClockMHz uint32) Return {
return nvmlDeviceSetGpuLockedClocks(device, minGpuClockMHz, maxGpuClockMHz)
}
// nvml.DeviceResetGpuLockedClocks()
func (l *library) DeviceResetGpuLockedClocks(device Device) Return {
return device.ResetGpuLockedClocks()
}
func (device nvmlDevice) ResetGpuLockedClocks() Return {
return nvmlDeviceResetGpuLockedClocks(device)
}
// nvmlDeviceSetMemoryLockedClocks()
func (l *library) DeviceSetMemoryLockedClocks(device Device, minMemClockMHz uint32, maxMemClockMHz uint32) Return {
return device.SetMemoryLockedClocks(minMemClockMHz, maxMemClockMHz)
}
func (device nvmlDevice) SetMemoryLockedClocks(minMemClockMHz uint32, maxMemClockMHz uint32) Return {
return nvmlDeviceSetMemoryLockedClocks(device, minMemClockMHz, maxMemClockMHz)
}
// nvmlDeviceResetMemoryLockedClocks()
func (l *library) DeviceResetMemoryLockedClocks(device Device) Return {
return device.ResetMemoryLockedClocks()
}
func (device nvmlDevice) ResetMemoryLockedClocks() Return {
return nvmlDeviceResetMemoryLockedClocks(device)
}
// nvml.DeviceGetClkMonStatus()
func (l *library) DeviceGetClkMonStatus(device Device) (ClkMonStatus, Return) {
return device.GetClkMonStatus()
}
func (device nvmlDevice) GetClkMonStatus() (ClkMonStatus, Return) {
var status ClkMonStatus
ret := nvmlDeviceGetClkMonStatus(device, &status)
return status, ret
}
// nvml.DeviceSetApplicationsClocks()
func (l *library) DeviceSetApplicationsClocks(device Device, memClockMHz uint32, graphicsClockMHz uint32) Return {
return device.SetApplicationsClocks(memClockMHz, graphicsClockMHz)
}
func (device nvmlDevice) SetApplicationsClocks(memClockMHz uint32, graphicsClockMHz uint32) Return {
return nvmlDeviceSetApplicationsClocks(device, memClockMHz, graphicsClockMHz)
}
// nvml.DeviceSetPowerManagementLimit()
func (l *library) DeviceSetPowerManagementLimit(device Device, limit uint32) Return {
return device.SetPowerManagementLimit(limit)
}
func (device nvmlDevice) SetPowerManagementLimit(limit uint32) Return {
return nvmlDeviceSetPowerManagementLimit(device, limit)
}
// nvml.DeviceSetGpuOperationMode()
func (l *library) DeviceSetGpuOperationMode(device Device, mode GpuOperationMode) Return {
return device.SetGpuOperationMode(mode)
}
func (device nvmlDevice) SetGpuOperationMode(mode GpuOperationMode) Return {
return nvmlDeviceSetGpuOperationMode(device, mode)
}
// nvml.DeviceSetAPIRestriction()
func (l *library) DeviceSetAPIRestriction(device Device, apiType RestrictedAPI, isRestricted EnableState) Return {
return device.SetAPIRestriction(apiType, isRestricted)
}
func (device nvmlDevice) SetAPIRestriction(apiType RestrictedAPI, isRestricted EnableState) Return {
return nvmlDeviceSetAPIRestriction(device, apiType, isRestricted)
}
// nvml.DeviceSetAccountingMode()
func (l *library) DeviceSetAccountingMode(device Device, mode EnableState) Return {
return device.SetAccountingMode(mode)
}
func (device nvmlDevice) SetAccountingMode(mode EnableState) Return {
return nvmlDeviceSetAccountingMode(device, mode)
}
// nvml.DeviceClearAccountingPids()
func (l *library) DeviceClearAccountingPids(device Device) Return {
return device.ClearAccountingPids()
}
func (device nvmlDevice) ClearAccountingPids() Return {
return nvmlDeviceClearAccountingPids(device)
}
// nvml.DeviceGetNvLinkState()
func (l *library) DeviceGetNvLinkState(device Device, link int) (EnableState, Return) {
return device.GetNvLinkState(link)
}
func (device nvmlDevice) GetNvLinkState(link int) (EnableState, Return) {
var isActive EnableState
ret := nvmlDeviceGetNvLinkState(device, uint32(link), &isActive)
return isActive, ret
}
// nvml.DeviceGetNvLinkVersion()
func (l *library) DeviceGetNvLinkVersion(device Device, link int) (uint32, Return) {
return device.GetNvLinkVersion(link)
}
func (device nvmlDevice) GetNvLinkVersion(link int) (uint32, Return) {
var version uint32
ret := nvmlDeviceGetNvLinkVersion(device, uint32(link), &version)
return version, ret
}
// nvml.DeviceGetNvLinkCapability()
func (l *library) DeviceGetNvLinkCapability(device Device, link int, capability NvLinkCapability) (uint32, Return) {
return device.GetNvLinkCapability(link, capability)
}
func (device nvmlDevice) GetNvLinkCapability(link int, capability NvLinkCapability) (uint32, Return) {
var capResult uint32
ret := nvmlDeviceGetNvLinkCapability(device, uint32(link), capability, &capResult)
return capResult, ret
}
// nvml.DeviceGetNvLinkRemotePciInfo()
func (l *library) DeviceGetNvLinkRemotePciInfo(device Device, link int) (PciInfo, Return) {
return device.GetNvLinkRemotePciInfo(link)
}
func (device nvmlDevice) GetNvLinkRemotePciInfo(link int) (PciInfo, Return) {
var pci PciInfo
ret := nvmlDeviceGetNvLinkRemotePciInfo(device, uint32(link), &pci)
return pci, ret
}
// nvml.DeviceGetNvLinkErrorCounter()
func (l *library) DeviceGetNvLinkErrorCounter(device Device, link int, counter NvLinkErrorCounter) (uint64, Return) {
return device.GetNvLinkErrorCounter(link, counter)
}
func (device nvmlDevice) GetNvLinkErrorCounter(link int, counter NvLinkErrorCounter) (uint64, Return) {
var counterValue uint64
ret := nvmlDeviceGetNvLinkErrorCounter(device, uint32(link), counter, &counterValue)
return counterValue, ret
}
// nvml.DeviceResetNvLinkErrorCounters()
func (l *library) DeviceResetNvLinkErrorCounters(device Device, link int) Return {
return device.ResetNvLinkErrorCounters(link)
}
func (device nvmlDevice) ResetNvLinkErrorCounters(link int) Return {
return nvmlDeviceResetNvLinkErrorCounters(device, uint32(link))
}
// nvml.DeviceSetNvLinkUtilizationControl()
func (l *library) DeviceSetNvLinkUtilizationControl(device Device, link int, counter int, control *NvLinkUtilizationControl, reset bool) Return {
return device.SetNvLinkUtilizationControl(link, counter, control, reset)
}
func (device nvmlDevice) SetNvLinkUtilizationControl(link int, counter int, control *NvLinkUtilizationControl, reset bool) Return {
resetValue := uint32(0)
if reset {
resetValue = 1
}
return nvmlDeviceSetNvLinkUtilizationControl(device, uint32(link), uint32(counter), control, resetValue)
}
// nvml.DeviceGetNvLinkUtilizationControl()
func (l *library) DeviceGetNvLinkUtilizationControl(device Device, link int, counter int) (NvLinkUtilizationControl, Return) {
return device.GetNvLinkUtilizationControl(link, counter)
}
func (device nvmlDevice) GetNvLinkUtilizationControl(link int, counter int) (NvLinkUtilizationControl, Return) {
var control NvLinkUtilizationControl
ret := nvmlDeviceGetNvLinkUtilizationControl(device, uint32(link), uint32(counter), &control)
return control, ret
}
// nvml.DeviceGetNvLinkUtilizationCounter()
func (l *library) DeviceGetNvLinkUtilizationCounter(device Device, link int, counter int) (uint64, uint64, Return) {
return device.GetNvLinkUtilizationCounter(link, counter)
}
func (device nvmlDevice) GetNvLinkUtilizationCounter(link int, counter int) (uint64, uint64, Return) {
var rxCounter, txCounter uint64
ret := nvmlDeviceGetNvLinkUtilizationCounter(device, uint32(link), uint32(counter), &rxCounter, &txCounter)
return rxCounter, txCounter, ret
}
// nvml.DeviceFreezeNvLinkUtilizationCounter()
func (l *library) DeviceFreezeNvLinkUtilizationCounter(device Device, link int, counter int, freeze EnableState) Return {
return device.FreezeNvLinkUtilizationCounter(link, counter, freeze)
}
func (device nvmlDevice) FreezeNvLinkUtilizationCounter(link int, counter int, freeze EnableState) Return {
return nvmlDeviceFreezeNvLinkUtilizationCounter(device, uint32(link), uint32(counter), freeze)
}
// nvml.DeviceResetNvLinkUtilizationCounter()
func (l *library) DeviceResetNvLinkUtilizationCounter(device Device, link int, counter int) Return {
return device.ResetNvLinkUtilizationCounter(link, counter)
}
func (device nvmlDevice) ResetNvLinkUtilizationCounter(link int, counter int) Return {
return nvmlDeviceResetNvLinkUtilizationCounter(device, uint32(link), uint32(counter))
}
// nvml.DeviceGetNvLinkRemoteDeviceType()
func (l *library) DeviceGetNvLinkRemoteDeviceType(device Device, link int) (IntNvLinkDeviceType, Return) {
return device.GetNvLinkRemoteDeviceType(link)
}
func (device nvmlDevice) GetNvLinkRemoteDeviceType(link int) (IntNvLinkDeviceType, Return) {
var nvLinkDeviceType IntNvLinkDeviceType
ret := nvmlDeviceGetNvLinkRemoteDeviceType(device, uint32(link), &nvLinkDeviceType)
return nvLinkDeviceType, ret
}
// nvml.DeviceRegisterEvents()
func (l *library) DeviceRegisterEvents(device Device, eventTypes uint64, set EventSet) Return {
return device.RegisterEvents(eventTypes, set)
}
func (device nvmlDevice) RegisterEvents(eventTypes uint64, set EventSet) Return {
return nvmlDeviceRegisterEvents(device, eventTypes, set.(nvmlEventSet))
}
// nvmlDeviceGetSupportedEventTypes()
func (l *library) DeviceGetSupportedEventTypes(device Device) (uint64, Return) {
return device.GetSupportedEventTypes()
}
func (device nvmlDevice) GetSupportedEventTypes() (uint64, Return) {
var eventTypes uint64
ret := nvmlDeviceGetSupportedEventTypes(device, &eventTypes)
return eventTypes, ret
}
// nvml.DeviceModifyDrainState()
func (l *library) DeviceModifyDrainState(pciInfo *PciInfo, newState EnableState) Return {
return nvmlDeviceModifyDrainState(pciInfo, newState)
}
// nvml.DeviceQueryDrainState()
func (l *library) DeviceQueryDrainState(pciInfo *PciInfo) (EnableState, Return) {
var currentState EnableState
ret := nvmlDeviceQueryDrainState(pciInfo, &currentState)
return currentState, ret
}
// nvml.DeviceRemoveGpu()
func (l *library) DeviceRemoveGpu(pciInfo *PciInfo) Return {
return nvmlDeviceRemoveGpu(pciInfo)
}
// nvml.DeviceRemoveGpu_v2()
func (l *library) DeviceRemoveGpu_v2(pciInfo *PciInfo, gpuState DetachGpuState, linkState PcieLinkState) Return {
return nvmlDeviceRemoveGpu_v2(pciInfo, gpuState, linkState)
}
// nvml.DeviceDiscoverGpus()
func (l *library) DeviceDiscoverGpus() (PciInfo, Return) {
var pciInfo PciInfo
ret := nvmlDeviceDiscoverGpus(&pciInfo)
return pciInfo, ret
}
// nvml.DeviceGetFieldValues()
func (l *library) DeviceGetFieldValues(device Device, values []FieldValue) Return {
return device.GetFieldValues(values)
}
func (device nvmlDevice) GetFieldValues(values []FieldValue) Return {
valuesCount := len(values)
return nvmlDeviceGetFieldValues(device, int32(valuesCount), &values[0])
}
// nvml.DeviceGetVirtualizationMode()
func (l *library) DeviceGetVirtualizationMode(device Device) (GpuVirtualizationMode, Return) {
return device.GetVirtualizationMode()
}
func (device nvmlDevice) GetVirtualizationMode() (GpuVirtualizationMode, Return) {
var pVirtualMode GpuVirtualizationMode
ret := nvmlDeviceGetVirtualizationMode(device, &pVirtualMode)
return pVirtualMode, ret
}
// nvml.DeviceGetHostVgpuMode()
func (l *library) DeviceGetHostVgpuMode(device Device) (HostVgpuMode, Return) {
return device.GetHostVgpuMode()
}
func (device nvmlDevice) GetHostVgpuMode() (HostVgpuMode, Return) {
var pHostVgpuMode HostVgpuMode
ret := nvmlDeviceGetHostVgpuMode(device, &pHostVgpuMode)
return pHostVgpuMode, ret
}
// nvml.DeviceSetVirtualizationMode()
func (l *library) DeviceSetVirtualizationMode(device Device, virtualMode GpuVirtualizationMode) Return {
return device.SetVirtualizationMode(virtualMode)
}
func (device nvmlDevice) SetVirtualizationMode(virtualMode GpuVirtualizationMode) Return {
return nvmlDeviceSetVirtualizationMode(device, virtualMode)
}
// nvml.DeviceGetGridLicensableFeatures()
func (l *library) DeviceGetGridLicensableFeatures(device Device) (GridLicensableFeatures, Return) {
return device.GetGridLicensableFeatures()
}
func (device nvmlDevice) GetGridLicensableFeatures() (GridLicensableFeatures, Return) {
var pGridLicensableFeatures GridLicensableFeatures
ret := nvmlDeviceGetGridLicensableFeatures(device, &pGridLicensableFeatures)
return pGridLicensableFeatures, ret
}
// nvml.DeviceGetProcessUtilization()
func (l *library) DeviceGetProcessUtilization(device Device, lastSeenTimestamp uint64) ([]ProcessUtilizationSample, Return) {
return device.GetProcessUtilization(lastSeenTimestamp)
}
func (device nvmlDevice) GetProcessUtilization(lastSeenTimestamp uint64) ([]ProcessUtilizationSample, Return) {
var processSamplesCount uint32
ret := nvmlDeviceGetProcessUtilization(device, nil, &processSamplesCount, lastSeenTimestamp)
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
if processSamplesCount == 0 {
return []ProcessUtilizationSample{}, ret
}
utilization := make([]ProcessUtilizationSample, processSamplesCount)
ret = nvmlDeviceGetProcessUtilization(device, &utilization[0], &processSamplesCount, lastSeenTimestamp)
return utilization[:processSamplesCount], ret
}
// nvml.DeviceGetSupportedVgpus()
func (l *library) DeviceGetSupportedVgpus(device Device) ([]VgpuTypeId, Return) {
return device.GetSupportedVgpus()
}
func (device nvmlDevice) GetSupportedVgpus() ([]VgpuTypeId, Return) {
var vgpuCount uint32 = 1 // Will be reduced upon returning
for {
vgpuTypeIds := make([]nvmlVgpuTypeId, vgpuCount)
ret := nvmlDeviceGetSupportedVgpus(device, &vgpuCount, &vgpuTypeIds[0])
if ret == SUCCESS {
return convertSlice[nvmlVgpuTypeId, VgpuTypeId](vgpuTypeIds[:vgpuCount]), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
vgpuCount *= 2
}
}
// nvml.DeviceGetCreatableVgpus()
func (l *library) DeviceGetCreatableVgpus(device Device) ([]VgpuTypeId, Return) {
return device.GetCreatableVgpus()
}
func (device nvmlDevice) GetCreatableVgpus() ([]VgpuTypeId, Return) {
var vgpuCount uint32 = 1 // Will be reduced upon returning
for {
vgpuTypeIds := make([]nvmlVgpuTypeId, vgpuCount)
ret := nvmlDeviceGetCreatableVgpus(device, &vgpuCount, &vgpuTypeIds[0])
if ret == SUCCESS {
return convertSlice[nvmlVgpuTypeId, VgpuTypeId](vgpuTypeIds[:vgpuCount]), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
vgpuCount *= 2
}
}
// nvml.DeviceGetActiveVgpus()
func (l *library) DeviceGetActiveVgpus(device Device) ([]VgpuInstance, Return) {
return device.GetActiveVgpus()
}
func (device nvmlDevice) GetActiveVgpus() ([]VgpuInstance, Return) {
var vgpuCount uint32 = 1 // Will be reduced upon returning
for {
vgpuInstances := make([]nvmlVgpuInstance, vgpuCount)
ret := nvmlDeviceGetActiveVgpus(device, &vgpuCount, &vgpuInstances[0])
if ret == SUCCESS {
return convertSlice[nvmlVgpuInstance, VgpuInstance](vgpuInstances[:vgpuCount]), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
vgpuCount *= 2
}
}
// nvml.DeviceGetVgpuMetadata()
func (l *library) DeviceGetVgpuMetadata(device Device) (VgpuPgpuMetadata, Return) {
return device.GetVgpuMetadata()
}
func (device nvmlDevice) GetVgpuMetadata() (VgpuPgpuMetadata, Return) {
var vgpuPgpuMetadata VgpuPgpuMetadata
opaqueDataSize := unsafe.Sizeof(vgpuPgpuMetadata.nvmlVgpuPgpuMetadata.OpaqueData)
vgpuPgpuMetadataSize := unsafe.Sizeof(vgpuPgpuMetadata.nvmlVgpuPgpuMetadata) - opaqueDataSize
for {
bufferSize := uint32(vgpuPgpuMetadataSize + opaqueDataSize)
buffer := make([]byte, bufferSize)
nvmlVgpuPgpuMetadataPtr := (*nvmlVgpuPgpuMetadata)(unsafe.Pointer(&buffer[0]))
ret := nvmlDeviceGetVgpuMetadata(device, nvmlVgpuPgpuMetadataPtr, &bufferSize)
if ret == SUCCESS {
vgpuPgpuMetadata.nvmlVgpuPgpuMetadata = *nvmlVgpuPgpuMetadataPtr
vgpuPgpuMetadata.OpaqueData = buffer[vgpuPgpuMetadataSize:bufferSize]
return vgpuPgpuMetadata, ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return vgpuPgpuMetadata, ret
}
opaqueDataSize = 2 * opaqueDataSize
}
}
// nvml.DeviceGetPgpuMetadataString()
func (l *library) DeviceGetPgpuMetadataString(device Device) (string, Return) {
return device.GetPgpuMetadataString()
}
func (device nvmlDevice) GetPgpuMetadataString() (string, Return) {
var bufferSize uint32 = 1 // Will be reduced upon returning
for {
pgpuMetadata := make([]byte, bufferSize)
ret := nvmlDeviceGetPgpuMetadataString(device, &pgpuMetadata[0], &bufferSize)
if ret == SUCCESS {
return string(pgpuMetadata[:clen(pgpuMetadata)]), ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return "", ret
}
bufferSize *= 2
}
}
// nvml.DeviceGetVgpuUtilization()
func (l *library) DeviceGetVgpuUtilization(device Device, lastSeenTimestamp uint64) (ValueType, []VgpuInstanceUtilizationSample, Return) {
return device.GetVgpuUtilization(lastSeenTimestamp)
}
func (device nvmlDevice) GetVgpuUtilization(lastSeenTimestamp uint64) (ValueType, []VgpuInstanceUtilizationSample, Return) {
var sampleValType ValueType
var vgpuInstanceSamplesCount uint32 = 1 // Will be reduced upon returning
for {
utilizationSamples := make([]VgpuInstanceUtilizationSample, vgpuInstanceSamplesCount)
ret := nvmlDeviceGetVgpuUtilization(device, lastSeenTimestamp, &sampleValType, &vgpuInstanceSamplesCount, &utilizationSamples[0])
if ret == SUCCESS {
return sampleValType, utilizationSamples[:vgpuInstanceSamplesCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return sampleValType, nil, ret
}
vgpuInstanceSamplesCount *= 2
}
}
// nvml.DeviceGetAttributes()
func (l *library) DeviceGetAttributes(device Device) (DeviceAttributes, Return) {
return device.GetAttributes()
}
func (device nvmlDevice) GetAttributes() (DeviceAttributes, Return) {
var attributes DeviceAttributes
ret := nvmlDeviceGetAttributes(device, &attributes)
return attributes, ret
}
// nvml.DeviceGetRemappedRows()
func (l *library) DeviceGetRemappedRows(device Device) (int, int, bool, bool, Return) {
return device.GetRemappedRows()
}
func (device nvmlDevice) GetRemappedRows() (int, int, bool, bool, Return) {
var corrRows, uncRows, isPending, failureOccured uint32
ret := nvmlDeviceGetRemappedRows(device, &corrRows, &uncRows, &isPending, &failureOccured)
return int(corrRows), int(uncRows), (isPending != 0), (failureOccured != 0), ret
}
// nvml.DeviceGetRowRemapperHistogram()
func (l *library) DeviceGetRowRemapperHistogram(device Device) (RowRemapperHistogramValues, Return) {
return device.GetRowRemapperHistogram()
}
func (device nvmlDevice) GetRowRemapperHistogram() (RowRemapperHistogramValues, Return) {
var values RowRemapperHistogramValues
ret := nvmlDeviceGetRowRemapperHistogram(device, &values)
return values, ret
}
// nvml.DeviceGetArchitecture()
func (l *library) DeviceGetArchitecture(device Device) (DeviceArchitecture, Return) {
return device.GetArchitecture()
}
func (device nvmlDevice) GetArchitecture() (DeviceArchitecture, Return) {
var arch DeviceArchitecture
ret := nvmlDeviceGetArchitecture(device, &arch)
return arch, ret
}
// nvml.DeviceGetVgpuProcessUtilization()
func (l *library) DeviceGetVgpuProcessUtilization(device Device, lastSeenTimestamp uint64) ([]VgpuProcessUtilizationSample, Return) {
return device.GetVgpuProcessUtilization(lastSeenTimestamp)
}
func (device nvmlDevice) GetVgpuProcessUtilization(lastSeenTimestamp uint64) ([]VgpuProcessUtilizationSample, Return) {
var vgpuProcessSamplesCount uint32 = 1 // Will be reduced upon returning
for {
utilizationSamples := make([]VgpuProcessUtilizationSample, vgpuProcessSamplesCount)
ret := nvmlDeviceGetVgpuProcessUtilization(device, lastSeenTimestamp, &vgpuProcessSamplesCount, &utilizationSamples[0])
if ret == SUCCESS {
return utilizationSamples[:vgpuProcessSamplesCount], ret
}
if ret != ERROR_INSUFFICIENT_SIZE {
return nil, ret
}
vgpuProcessSamplesCount *= 2
}
}
// nvml.GetExcludedDeviceCount()
func (l *library) GetExcludedDeviceCount() (int, Return) {
var deviceCount uint32
ret := nvmlGetExcludedDeviceCount(&deviceCount)
return int(deviceCount), ret
}
// nvml.GetExcludedDeviceInfoByIndex()
func (l *library) GetExcludedDeviceInfoByIndex(index int) (ExcludedDeviceInfo, Return) {
var info ExcludedDeviceInfo
ret := nvmlGetExcludedDeviceInfoByIndex(uint32(index), &info)
return info, ret
}
// nvml.DeviceSetMigMode()
func (l *library) DeviceSetMigMode(device Device, mode int) (Return, Return) {
return device.SetMigMode(mode)
}
func (device nvmlDevice) SetMigMode(mode int) (Return, Return) {
var activationStatus Return
ret := nvmlDeviceSetMigMode(device, uint32(mode), &activationStatus)
return activationStatus, ret
}
// nvml.DeviceGetMigMode()
func (l *library) DeviceGetMigMode(device Device) (int, int, Return) {
return device.GetMigMode()
}
func (device nvmlDevice) GetMigMode() (int, int, Return) {
var currentMode, pendingMode uint32
ret := nvmlDeviceGetMigMode(device, &currentMode, &pendingMode)
return int(currentMode), int(pendingMode), ret
}
// nvml.DeviceGetGpuInstanceProfileInfo()
func (l *library) DeviceGetGpuInstanceProfileInfo(device Device, profile int) (GpuInstanceProfileInfo, Return) {
return device.GetGpuInstanceProfileInfo(profile)
}
func (device nvmlDevice) GetGpuInstanceProfileInfo(profile int) (GpuInstanceProfileInfo, Return) {
var info GpuInstanceProfileInfo
ret := nvmlDeviceGetGpuInstanceProfileInfo(device, uint32(profile), &info)
return info, ret
}
// nvml.DeviceGetGpuInstanceProfileInfoV()
type GpuInstanceProfileInfoV struct {
device nvmlDevice
profile int
}
func (infoV GpuInstanceProfileInfoV) V1() (GpuInstanceProfileInfo, Return) {
return DeviceGetGpuInstanceProfileInfo(infoV.device, infoV.profile)
}
func (infoV GpuInstanceProfileInfoV) V2() (GpuInstanceProfileInfo_v2, Return) {
var info GpuInstanceProfileInfo_v2
info.Version = STRUCT_VERSION(info, 2)
ret := nvmlDeviceGetGpuInstanceProfileInfoV(infoV.device, uint32(infoV.profile), &info)
return info, ret
}
func (l *library) DeviceGetGpuInstanceProfileInfoV(device Device, profile int) GpuInstanceProfileInfoV {
return device.GetGpuInstanceProfileInfoV(profile)
}
func (device nvmlDevice) GetGpuInstanceProfileInfoV(profile int) GpuInstanceProfileInfoV {
return GpuInstanceProfileInfoV{device, profile}
}
// nvml.DeviceGetGpuInstancePossiblePlacements()
func (l *library) DeviceGetGpuInstancePossiblePlacements(device Device, info *GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return) {
return device.GetGpuInstancePossiblePlacements(info)
}
func (device nvmlDevice) GetGpuInstancePossiblePlacements(info *GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var count uint32
ret := nvmlDeviceGetGpuInstancePossiblePlacements(device, info.Id, nil, &count)
if ret != SUCCESS {
return nil, ret
}
if count == 0 {
return []GpuInstancePlacement{}, ret
}
placements := make([]GpuInstancePlacement, count)
ret = nvmlDeviceGetGpuInstancePossiblePlacements(device, info.Id, &placements[0], &count)
return placements[:count], ret
}
// nvml.DeviceGetGpuInstanceRemainingCapacity()
func (l *library) DeviceGetGpuInstanceRemainingCapacity(device Device, info *GpuInstanceProfileInfo) (int, Return) {
return device.GetGpuInstanceRemainingCapacity(info)
}
func (device nvmlDevice) GetGpuInstanceRemainingCapacity(info *GpuInstanceProfileInfo) (int, Return) {
if info == nil {
return 0, ERROR_INVALID_ARGUMENT
}
var count uint32
ret := nvmlDeviceGetGpuInstanceRemainingCapacity(device, info.Id, &count)
return int(count), ret
}
// nvml.DeviceCreateGpuInstance()
func (l *library) DeviceCreateGpuInstance(device Device, info *GpuInstanceProfileInfo) (GpuInstance, Return) {
return device.CreateGpuInstance(info)
}
func (device nvmlDevice) CreateGpuInstance(info *GpuInstanceProfileInfo) (GpuInstance, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var gpuInstance nvmlGpuInstance
ret := nvmlDeviceCreateGpuInstance(device, info.Id, &gpuInstance)
return gpuInstance, ret
}
// nvml.DeviceCreateGpuInstanceWithPlacement()
func (l *library) DeviceCreateGpuInstanceWithPlacement(device Device, info *GpuInstanceProfileInfo, placement *GpuInstancePlacement) (GpuInstance, Return) {
return device.CreateGpuInstanceWithPlacement(info, placement)
}
func (device nvmlDevice) CreateGpuInstanceWithPlacement(info *GpuInstanceProfileInfo, placement *GpuInstancePlacement) (GpuInstance, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var gpuInstance nvmlGpuInstance
ret := nvmlDeviceCreateGpuInstanceWithPlacement(device, info.Id, placement, &gpuInstance)
return gpuInstance, ret
}
// nvml.GpuInstanceDestroy()
func (l *library) GpuInstanceDestroy(gpuInstance GpuInstance) Return {
return gpuInstance.Destroy()
}
func (gpuInstance nvmlGpuInstance) Destroy() Return {
return nvmlGpuInstanceDestroy(gpuInstance)
}
// nvml.DeviceGetGpuInstances()
func (l *library) DeviceGetGpuInstances(device Device, info *GpuInstanceProfileInfo) ([]GpuInstance, Return) {
return device.GetGpuInstances(info)
}
func (device nvmlDevice) GetGpuInstances(info *GpuInstanceProfileInfo) ([]GpuInstance, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var count uint32 = info.InstanceCount
gpuInstances := make([]nvmlGpuInstance, count)
ret := nvmlDeviceGetGpuInstances(device, info.Id, &gpuInstances[0], &count)
return convertSlice[nvmlGpuInstance, GpuInstance](gpuInstances[:count]), ret
}
// nvml.DeviceGetGpuInstanceById()
func (l *library) DeviceGetGpuInstanceById(device Device, id int) (GpuInstance, Return) {
return device.GetGpuInstanceById(id)
}
func (device nvmlDevice) GetGpuInstanceById(id int) (GpuInstance, Return) {
var gpuInstance nvmlGpuInstance
ret := nvmlDeviceGetGpuInstanceById(device, uint32(id), &gpuInstance)
return gpuInstance, ret
}
// nvml.GpuInstanceGetInfo()
func (l *library) GpuInstanceGetInfo(gpuInstance GpuInstance) (GpuInstanceInfo, Return) {
return gpuInstance.GetInfo()
}
func (gpuInstance nvmlGpuInstance) GetInfo() (GpuInstanceInfo, Return) {
var info nvmlGpuInstanceInfo
ret := nvmlGpuInstanceGetInfo(gpuInstance, &info)
return info.convert(), ret
}
// nvml.GpuInstanceGetComputeInstanceProfileInfo()
func (l *library) GpuInstanceGetComputeInstanceProfileInfo(gpuInstance GpuInstance, profile int, engProfile int) (ComputeInstanceProfileInfo, Return) {
return gpuInstance.GetComputeInstanceProfileInfo(profile, engProfile)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstanceProfileInfo(profile int, engProfile int) (ComputeInstanceProfileInfo, Return) {
var info ComputeInstanceProfileInfo
ret := nvmlGpuInstanceGetComputeInstanceProfileInfo(gpuInstance, uint32(profile), uint32(engProfile), &info)
return info, ret
}
// nvml.GpuInstanceGetComputeInstanceProfileInfoV()
type ComputeInstanceProfileInfoV struct {
gpuInstance nvmlGpuInstance
profile int
engProfile int
}
func (infoV ComputeInstanceProfileInfoV) V1() (ComputeInstanceProfileInfo, Return) {
return GpuInstanceGetComputeInstanceProfileInfo(infoV.gpuInstance, infoV.profile, infoV.engProfile)
}
func (infoV ComputeInstanceProfileInfoV) V2() (ComputeInstanceProfileInfo_v2, Return) {
var info ComputeInstanceProfileInfo_v2
info.Version = STRUCT_VERSION(info, 2)
ret := nvmlGpuInstanceGetComputeInstanceProfileInfoV(infoV.gpuInstance, uint32(infoV.profile), uint32(infoV.engProfile), &info)
return info, ret
}
func (l *library) GpuInstanceGetComputeInstanceProfileInfoV(gpuInstance GpuInstance, profile int, engProfile int) ComputeInstanceProfileInfoV {
return gpuInstance.GetComputeInstanceProfileInfoV(profile, engProfile)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstanceProfileInfoV(profile int, engProfile int) ComputeInstanceProfileInfoV {
return ComputeInstanceProfileInfoV{gpuInstance, profile, engProfile}
}
// nvml.GpuInstanceGetComputeInstanceRemainingCapacity()
func (l *library) GpuInstanceGetComputeInstanceRemainingCapacity(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) (int, Return) {
return gpuInstance.GetComputeInstanceRemainingCapacity(info)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstanceRemainingCapacity(info *ComputeInstanceProfileInfo) (int, Return) {
if info == nil {
return 0, ERROR_INVALID_ARGUMENT
}
var count uint32
ret := nvmlGpuInstanceGetComputeInstanceRemainingCapacity(gpuInstance, info.Id, &count)
return int(count), ret
}
// nvml.GpuInstanceCreateComputeInstance()
func (l *library) GpuInstanceCreateComputeInstance(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) (ComputeInstance, Return) {
return gpuInstance.CreateComputeInstance(info)
}
func (gpuInstance nvmlGpuInstance) CreateComputeInstance(info *ComputeInstanceProfileInfo) (ComputeInstance, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var computeInstance nvmlComputeInstance
ret := nvmlGpuInstanceCreateComputeInstance(gpuInstance, info.Id, &computeInstance)
return computeInstance, ret
}
// nvml.ComputeInstanceDestroy()
func (l *library) ComputeInstanceDestroy(computeInstance ComputeInstance) Return {
return computeInstance.Destroy()
}
func (computeInstance nvmlComputeInstance) Destroy() Return {
return nvmlComputeInstanceDestroy(computeInstance)
}
// nvml.GpuInstanceGetComputeInstances()
func (l *library) GpuInstanceGetComputeInstances(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) ([]ComputeInstance, Return) {
return gpuInstance.GetComputeInstances(info)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstances(info *ComputeInstanceProfileInfo) ([]ComputeInstance, Return) {
if info == nil {
return nil, ERROR_INVALID_ARGUMENT
}
var count uint32 = info.InstanceCount
computeInstances := make([]nvmlComputeInstance, count)
ret := nvmlGpuInstanceGetComputeInstances(gpuInstance, info.Id, &computeInstances[0], &count)
return convertSlice[nvmlComputeInstance, ComputeInstance](computeInstances[:count]), ret
}
// nvml.GpuInstanceGetComputeInstanceById()
func (l *library) GpuInstanceGetComputeInstanceById(gpuInstance GpuInstance, id int) (ComputeInstance, Return) {
return gpuInstance.GetComputeInstanceById(id)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstanceById(id int) (ComputeInstance, Return) {
var computeInstance nvmlComputeInstance
ret := nvmlGpuInstanceGetComputeInstanceById(gpuInstance, uint32(id), &computeInstance)
return computeInstance, ret
}
// nvml.ComputeInstanceGetInfo()
func (l *library) ComputeInstanceGetInfo(computeInstance ComputeInstance) (ComputeInstanceInfo, Return) {
return computeInstance.GetInfo()
}
func (computeInstance nvmlComputeInstance) GetInfo() (ComputeInstanceInfo, Return) {
var info nvmlComputeInstanceInfo
ret := nvmlComputeInstanceGetInfo(computeInstance, &info)
return info.convert(), ret
}
// nvml.DeviceIsMigDeviceHandle()
func (l *library) DeviceIsMigDeviceHandle(device Device) (bool, Return) {
return device.IsMigDeviceHandle()
}
func (device nvmlDevice) IsMigDeviceHandle() (bool, Return) {
var isMigDevice uint32
ret := nvmlDeviceIsMigDeviceHandle(device, &isMigDevice)
return (isMigDevice != 0), ret
}
// nvml DeviceGetGpuInstanceId()
func (l *library) DeviceGetGpuInstanceId(device Device) (int, Return) {
return device.GetGpuInstanceId()
}
func (device nvmlDevice) GetGpuInstanceId() (int, Return) {
var id uint32
ret := nvmlDeviceGetGpuInstanceId(device, &id)
return int(id), ret
}
// nvml.DeviceGetComputeInstanceId()
func (l *library) DeviceGetComputeInstanceId(device Device) (int, Return) {
return device.GetComputeInstanceId()
}
func (device nvmlDevice) GetComputeInstanceId() (int, Return) {
var id uint32
ret := nvmlDeviceGetComputeInstanceId(device, &id)
return int(id), ret
}
// nvml.DeviceGetMaxMigDeviceCount()
func (l *library) DeviceGetMaxMigDeviceCount(device Device) (int, Return) {
return device.GetMaxMigDeviceCount()
}
func (device nvmlDevice) GetMaxMigDeviceCount() (int, Return) {
var count uint32
ret := nvmlDeviceGetMaxMigDeviceCount(device, &count)
return int(count), ret
}
// nvml.DeviceGetMigDeviceHandleByIndex()
func (l *library) DeviceGetMigDeviceHandleByIndex(device Device, index int) (Device, Return) {
return device.GetMigDeviceHandleByIndex(index)
}
func (device nvmlDevice) GetMigDeviceHandleByIndex(index int) (Device, Return) {
var migDevice nvmlDevice
ret := nvmlDeviceGetMigDeviceHandleByIndex(device, uint32(index), &migDevice)
return migDevice, ret
}
// nvml.DeviceGetDeviceHandleFromMigDeviceHandle()
func (l *library) DeviceGetDeviceHandleFromMigDeviceHandle(migdevice Device) (Device, Return) {
return migdevice.GetDeviceHandleFromMigDeviceHandle()
}
func (migDevice nvmlDevice) GetDeviceHandleFromMigDeviceHandle() (Device, Return) {
var device nvmlDevice
ret := nvmlDeviceGetDeviceHandleFromMigDeviceHandle(migDevice, &device)
return device, ret
}
// nvml.DeviceGetBusType()
func (l *library) DeviceGetBusType(device Device) (BusType, Return) {
return device.GetBusType()
}
func (device nvmlDevice) GetBusType() (BusType, Return) {
var busType BusType
ret := nvmlDeviceGetBusType(device, &busType)
return busType, ret
}
// nvml.DeviceSetDefaultFanSpeed_v2()
func (l *library) DeviceSetDefaultFanSpeed_v2(device Device, fan int) Return {
return device.SetDefaultFanSpeed_v2(fan)
}
func (device nvmlDevice) SetDefaultFanSpeed_v2(fan int) Return {
return nvmlDeviceSetDefaultFanSpeed_v2(device, uint32(fan))
}
// nvml.DeviceGetMinMaxFanSpeed()
func (l *library) DeviceGetMinMaxFanSpeed(device Device) (int, int, Return) {
return device.GetMinMaxFanSpeed()
}
func (device nvmlDevice) GetMinMaxFanSpeed() (int, int, Return) {
var minSpeed, maxSpeed uint32
ret := nvmlDeviceGetMinMaxFanSpeed(device, &minSpeed, &maxSpeed)
return int(minSpeed), int(maxSpeed), ret
}
// nvml.DeviceGetThermalSettings()
func (l *library) DeviceGetThermalSettings(device Device, sensorIndex uint32) (GpuThermalSettings, Return) {
return device.GetThermalSettings(sensorIndex)
}
func (device nvmlDevice) GetThermalSettings(sensorIndex uint32) (GpuThermalSettings, Return) {
var pThermalSettings GpuThermalSettings
ret := nvmlDeviceGetThermalSettings(device, sensorIndex, &pThermalSettings)
return pThermalSettings, ret
}
// nvml.DeviceGetDefaultEccMode()
func (l *library) DeviceGetDefaultEccMode(device Device) (EnableState, Return) {
return device.GetDefaultEccMode()
}
func (device nvmlDevice) GetDefaultEccMode() (EnableState, Return) {
var defaultMode EnableState
ret := nvmlDeviceGetDefaultEccMode(device, &defaultMode)
return defaultMode, ret
}
// nvml.DeviceGetPcieSpeed()
func (l *library) DeviceGetPcieSpeed(device Device) (int, Return) {
return device.GetPcieSpeed()
}
func (device nvmlDevice) GetPcieSpeed() (int, Return) {
var pcieSpeed uint32
ret := nvmlDeviceGetPcieSpeed(device, &pcieSpeed)
return int(pcieSpeed), ret
}
// nvml.DeviceGetGspFirmwareVersion()
func (l *library) DeviceGetGspFirmwareVersion(device Device) (string, Return) {
return device.GetGspFirmwareVersion()
}
func (device nvmlDevice) GetGspFirmwareVersion() (string, Return) {
version := make([]byte, GSP_FIRMWARE_VERSION_BUF_SIZE)
ret := nvmlDeviceGetGspFirmwareVersion(device, &version[0])
return string(version[:clen(version)]), ret
}
// nvml.DeviceGetGspFirmwareMode()
func (l *library) DeviceGetGspFirmwareMode(device Device) (bool, bool, Return) {
return device.GetGspFirmwareMode()
}
func (device nvmlDevice) GetGspFirmwareMode() (bool, bool, Return) {
var isEnabled, defaultMode uint32
ret := nvmlDeviceGetGspFirmwareMode(device, &isEnabled, &defaultMode)
return (isEnabled != 0), (defaultMode != 0), ret
}
// nvml.DeviceGetDynamicPstatesInfo()
func (l *library) DeviceGetDynamicPstatesInfo(device Device) (GpuDynamicPstatesInfo, Return) {
return device.GetDynamicPstatesInfo()
}
func (device nvmlDevice) GetDynamicPstatesInfo() (GpuDynamicPstatesInfo, Return) {
var pDynamicPstatesInfo GpuDynamicPstatesInfo
ret := nvmlDeviceGetDynamicPstatesInfo(device, &pDynamicPstatesInfo)
return pDynamicPstatesInfo, ret
}
// nvml.DeviceSetFanSpeed_v2()
func (l *library) DeviceSetFanSpeed_v2(device Device, fan int, speed int) Return {
return device.SetFanSpeed_v2(fan, speed)
}
func (device nvmlDevice) SetFanSpeed_v2(fan int, speed int) Return {
return nvmlDeviceSetFanSpeed_v2(device, uint32(fan), uint32(speed))
}
// nvml.DeviceGetGpcClkVfOffset()
func (l *library) DeviceGetGpcClkVfOffset(device Device) (int, Return) {
return device.GetGpcClkVfOffset()
}
func (device nvmlDevice) GetGpcClkVfOffset() (int, Return) {
var offset int32
ret := nvmlDeviceGetGpcClkVfOffset(device, &offset)
return int(offset), ret
}
// nvml.DeviceSetGpcClkVfOffset()
func (l *library) DeviceSetGpcClkVfOffset(device Device, offset int) Return {
return device.SetGpcClkVfOffset(offset)
}
func (device nvmlDevice) SetGpcClkVfOffset(offset int) Return {
return nvmlDeviceSetGpcClkVfOffset(device, int32(offset))
}
// nvml.DeviceGetMinMaxClockOfPState()
func (l *library) DeviceGetMinMaxClockOfPState(device Device, clockType ClockType, pstate Pstates) (uint32, uint32, Return) {
return device.GetMinMaxClockOfPState(clockType, pstate)
}
func (device nvmlDevice) GetMinMaxClockOfPState(clockType ClockType, pstate Pstates) (uint32, uint32, Return) {
var minClockMHz, maxClockMHz uint32
ret := nvmlDeviceGetMinMaxClockOfPState(device, clockType, pstate, &minClockMHz, &maxClockMHz)
return minClockMHz, maxClockMHz, ret
}
// nvml.DeviceGetSupportedPerformanceStates()
func (l *library) DeviceGetSupportedPerformanceStates(device Device) ([]Pstates, Return) {
return device.GetSupportedPerformanceStates()
}
func (device nvmlDevice) GetSupportedPerformanceStates() ([]Pstates, Return) {
pstates := make([]Pstates, MAX_GPU_PERF_PSTATES)
ret := nvmlDeviceGetSupportedPerformanceStates(device, &pstates[0], MAX_GPU_PERF_PSTATES)
for i := 0; i < MAX_GPU_PERF_PSTATES; i++ {
if pstates[i] == PSTATE_UNKNOWN {
return pstates[0:i], ret
}
}
return pstates, ret
}
// nvml.DeviceGetTargetFanSpeed()
func (l *library) DeviceGetTargetFanSpeed(device Device, fan int) (int, Return) {
return device.GetTargetFanSpeed(fan)
}
func (device nvmlDevice) GetTargetFanSpeed(fan int) (int, Return) {
var targetSpeed uint32
ret := nvmlDeviceGetTargetFanSpeed(device, uint32(fan), &targetSpeed)
return int(targetSpeed), ret
}
// nvml.DeviceGetMemClkVfOffset()
func (l *library) DeviceGetMemClkVfOffset(device Device) (int, Return) {
return device.GetMemClkVfOffset()
}
func (device nvmlDevice) GetMemClkVfOffset() (int, Return) {
var offset int32
ret := nvmlDeviceGetMemClkVfOffset(device, &offset)
return int(offset), ret
}
// nvml.DeviceSetMemClkVfOffset()
func (l *library) DeviceSetMemClkVfOffset(device Device, offset int) Return {
return device.SetMemClkVfOffset(offset)
}
func (device nvmlDevice) SetMemClkVfOffset(offset int) Return {
return nvmlDeviceSetMemClkVfOffset(device, int32(offset))
}
// nvml.DeviceGetGpcClkMinMaxVfOffset()
func (l *library) DeviceGetGpcClkMinMaxVfOffset(device Device) (int, int, Return) {
return device.GetGpcClkMinMaxVfOffset()
}
func (device nvmlDevice) GetGpcClkMinMaxVfOffset() (int, int, Return) {
var minOffset, maxOffset int32
ret := nvmlDeviceGetGpcClkMinMaxVfOffset(device, &minOffset, &maxOffset)
return int(minOffset), int(maxOffset), ret
}
// nvml.DeviceGetMemClkMinMaxVfOffset()
func (l *library) DeviceGetMemClkMinMaxVfOffset(device Device) (int, int, Return) {
return device.GetMemClkMinMaxVfOffset()
}
func (device nvmlDevice) GetMemClkMinMaxVfOffset() (int, int, Return) {
var minOffset, maxOffset int32
ret := nvmlDeviceGetMemClkMinMaxVfOffset(device, &minOffset, &maxOffset)
return int(minOffset), int(maxOffset), ret
}
// nvml.DeviceGetGpuMaxPcieLinkGeneration()
func (l *library) DeviceGetGpuMaxPcieLinkGeneration(device Device) (int, Return) {
return device.GetGpuMaxPcieLinkGeneration()
}
func (device nvmlDevice) GetGpuMaxPcieLinkGeneration() (int, Return) {
var maxLinkGenDevice uint32
ret := nvmlDeviceGetGpuMaxPcieLinkGeneration(device, &maxLinkGenDevice)
return int(maxLinkGenDevice), ret
}
// nvml.DeviceGetFanControlPolicy_v2()
func (l *library) DeviceGetFanControlPolicy_v2(device Device, fan int) (FanControlPolicy, Return) {
return device.GetFanControlPolicy_v2(fan)
}
func (device nvmlDevice) GetFanControlPolicy_v2(fan int) (FanControlPolicy, Return) {
var policy FanControlPolicy
ret := nvmlDeviceGetFanControlPolicy_v2(device, uint32(fan), &policy)
return policy, ret
}
// nvml.DeviceSetFanControlPolicy()
func (l *library) DeviceSetFanControlPolicy(device Device, fan int, policy FanControlPolicy) Return {
return device.SetFanControlPolicy(fan, policy)
}
func (device nvmlDevice) SetFanControlPolicy(fan int, policy FanControlPolicy) Return {
return nvmlDeviceSetFanControlPolicy(device, uint32(fan), policy)
}
// nvml.DeviceClearFieldValues()
func (l *library) DeviceClearFieldValues(device Device, values []FieldValue) Return {
return device.ClearFieldValues(values)
}
func (device nvmlDevice) ClearFieldValues(values []FieldValue) Return {
valuesCount := len(values)
return nvmlDeviceClearFieldValues(device, int32(valuesCount), &values[0])
}
// nvml.DeviceGetVgpuCapabilities()
func (l *library) DeviceGetVgpuCapabilities(device Device, capability DeviceVgpuCapability) (bool, Return) {
return device.GetVgpuCapabilities(capability)
}
func (device nvmlDevice) GetVgpuCapabilities(capability DeviceVgpuCapability) (bool, Return) {
var capResult uint32
ret := nvmlDeviceGetVgpuCapabilities(device, capability, &capResult)
return (capResult != 0), ret
}
// nvml.DeviceGetVgpuSchedulerLog()
func (l *library) DeviceGetVgpuSchedulerLog(device Device) (VgpuSchedulerLog, Return) {
return device.GetVgpuSchedulerLog()
}
func (device nvmlDevice) GetVgpuSchedulerLog() (VgpuSchedulerLog, Return) {
var pSchedulerLog VgpuSchedulerLog
ret := nvmlDeviceGetVgpuSchedulerLog(device, &pSchedulerLog)
return pSchedulerLog, ret
}
// nvml.DeviceGetVgpuSchedulerState()
func (l *library) DeviceGetVgpuSchedulerState(device Device) (VgpuSchedulerGetState, Return) {
return device.GetVgpuSchedulerState()
}
func (device nvmlDevice) GetVgpuSchedulerState() (VgpuSchedulerGetState, Return) {
var pSchedulerState VgpuSchedulerGetState
ret := nvmlDeviceGetVgpuSchedulerState(device, &pSchedulerState)
return pSchedulerState, ret
}
// nvml.DeviceSetVgpuSchedulerState()
func (l *library) DeviceSetVgpuSchedulerState(device Device, pSchedulerState *VgpuSchedulerSetState) Return {
return device.SetVgpuSchedulerState(pSchedulerState)
}
func (device nvmlDevice) SetVgpuSchedulerState(pSchedulerState *VgpuSchedulerSetState) Return {
return nvmlDeviceSetVgpuSchedulerState(device, pSchedulerState)
}
// nvml.DeviceGetVgpuSchedulerCapabilities()
func (l *library) DeviceGetVgpuSchedulerCapabilities(device Device) (VgpuSchedulerCapabilities, Return) {
return device.GetVgpuSchedulerCapabilities()
}
func (device nvmlDevice) GetVgpuSchedulerCapabilities() (VgpuSchedulerCapabilities, Return) {
var pCapabilities VgpuSchedulerCapabilities
ret := nvmlDeviceGetVgpuSchedulerCapabilities(device, &pCapabilities)
return pCapabilities, ret
}
// nvml.GpuInstanceGetComputeInstancePossiblePlacements()
func (l *library) GpuInstanceGetComputeInstancePossiblePlacements(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) {
return gpuInstance.GetComputeInstancePossiblePlacements(info)
}
func (gpuInstance nvmlGpuInstance) GetComputeInstancePossiblePlacements(info *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) {
var count uint32
ret := nvmlGpuInstanceGetComputeInstancePossiblePlacements(gpuInstance, info.Id, nil, &count)
if ret != SUCCESS {
return nil, ret
}
if count == 0 {
return []ComputeInstancePlacement{}, ret
}
placementArray := make([]ComputeInstancePlacement, count)
ret = nvmlGpuInstanceGetComputeInstancePossiblePlacements(gpuInstance, info.Id, &placementArray[0], &count)
return placementArray, ret
}
// nvml.GpuInstanceCreateComputeInstanceWithPlacement()
func (l *library) GpuInstanceCreateComputeInstanceWithPlacement(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo, placement *ComputeInstancePlacement) (ComputeInstance, Return) {
return gpuInstance.CreateComputeInstanceWithPlacement(info, placement)
}
func (gpuInstance nvmlGpuInstance) CreateComputeInstanceWithPlacement(info *ComputeInstanceProfileInfo, placement *ComputeInstancePlacement) (ComputeInstance, Return) {
var computeInstance nvmlComputeInstance
ret := nvmlGpuInstanceCreateComputeInstanceWithPlacement(gpuInstance, info.Id, placement, &computeInstance)
return computeInstance, ret
}
// nvml.DeviceGetGpuFabricInfo()
func (l *library) DeviceGetGpuFabricInfo(device Device) (GpuFabricInfo, Return) {
return device.GetGpuFabricInfo()
}
func (device nvmlDevice) GetGpuFabricInfo() (GpuFabricInfo, Return) {
var gpuFabricInfo GpuFabricInfo
ret := nvmlDeviceGetGpuFabricInfo(device, &gpuFabricInfo)
return gpuFabricInfo, ret
}
// nvml.DeviceCcuGetStreamState()
func (l *library) DeviceCcuGetStreamState(device Device) (int, Return) {
return device.CcuGetStreamState()
}
func (device nvmlDevice) CcuGetStreamState() (int, Return) {
var state uint32
ret := nvmlDeviceCcuGetStreamState(device, &state)
return int(state), ret
}
// nvml.DeviceCcuSetStreamState()
func (l *library) DeviceCcuSetStreamState(device Device, state int) Return {
return device.CcuSetStreamState(state)
}
func (device nvmlDevice) CcuSetStreamState(state int) Return {
return nvmlDeviceCcuSetStreamState(device, uint32(state))
}
// nvml.DeviceSetNvLinkDeviceLowPowerThreshold()
func (l *library) DeviceSetNvLinkDeviceLowPowerThreshold(device Device, info *NvLinkPowerThres) Return {
return device.SetNvLinkDeviceLowPowerThreshold(info)
}
func (device nvmlDevice) SetNvLinkDeviceLowPowerThreshold(info *NvLinkPowerThres) Return {
return nvmlDeviceSetNvLinkDeviceLowPowerThreshold(device, info)
}