// 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, ¤t, &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, ¤t, &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, ¤t, &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], ×tamps[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, ¤tState) 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, ¤tMode, &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) }