diff --git a/go.mod b/go.mod index 44f7e99cd..05adcb6be 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.0 require ( github.com/Masterminds/semver/v3 v3.5.0 github.com/NVIDIA/go-nvlib v0.12.0 - github.com/NVIDIA/go-nvml v0.13.4-0 + github.com/NVIDIA/go-nvml v0.13.4-1 github.com/containerd/nri v0.12.3 github.com/cyphar/filepath-securejoin v0.7.0 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index 6d4d8db26..09cfa9bb8 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAw github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/NVIDIA/go-nvlib v0.12.0 h1:LICVlUGlDnpbwQv64rOZQn11xQae1J+c+dvH9CCi7jc= github.com/NVIDIA/go-nvlib v0.12.0/go.mod h1:J5M/QPIJJtaipjdONqevSnfgBlkW49uVWX5cFOoQpoA= -github.com/NVIDIA/go-nvml v0.13.4-0 h1:o3jp9u2x1R9ShFE3v+Aesp55XOSIQFMJz/VGNUcJaNE= -github.com/NVIDIA/go-nvml v0.13.4-0/go.mod h1:id63qwpoDWpFXwnwM6psDCSqW4BmNu6mWpr4YeQtPGo= +github.com/NVIDIA/go-nvml v0.13.4-1 h1:2E7RdOLBxHGSXq8sUw+c5Y0aWmFT7Cj+ZdjYulgUH18= +github.com/NVIDIA/go-nvml v0.13.4-1/go.mod h1:id63qwpoDWpFXwnwM6psDCSqW4BmNu6mWpr4YeQtPGo= github.com/brianvoe/gofakeit/v7 v7.12.1 h1:df1tiI4SL1dR5Ix4D/r6a3a+nXBJ/OBGU5jEKRBmmqg= github.com/brianvoe/gofakeit/v7 v7.12.1/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_linux.go b/vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_linux.go index 6941d08c7..23e447a7e 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_linux.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_linux.go @@ -39,7 +39,7 @@ func (dl *DynamicLibrary) Path() (string, error) { return "", fmt.Errorf("%v not opened", dl.Name) } - libParentPathBuffer := C.CBytes(make([]byte, 0, C.PATH_MAX)) + libParentPathBuffer := C.CBytes(make([]byte, C.PATH_MAX)) defer C.free(unsafe.Pointer(libParentPathBuffer)) var libPath string diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go index 418c7e0c8..3f358b03b 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go @@ -271,6 +271,9 @@ func (device nvmlDevice) GetTopologyNearestGpus(level GpuTopologyLevel) ([]Devic } deviceArray := make([]nvmlDevice, count) ret = nvmlDeviceGetTopologyNearestGpus(device, level, &count, &deviceArray[0]) + if ret == SUCCESS { + deviceArray = deviceArray[:count] + } return convertSlice[nvmlDevice, Device](deviceArray), ret } @@ -1336,6 +1339,9 @@ func (device nvmlDevice) GetSamples(samplingType SamplingType, lastSeenTimestamp } samples := make([]Sample, sampleCount) ret = nvmlDeviceGetSamples(device, samplingType, lastSeenTimestamp, &sampleValType, &sampleCount, &samples[0]) + if ret == SUCCESS { + samples = samples[:sampleCount] + } return sampleValType, samples, ret } @@ -1945,6 +1951,9 @@ func (l *library) DeviceGetFieldValues(device Device, values []FieldValue) Retur func (device nvmlDevice) GetFieldValues(values []FieldValue) Return { valuesCount := len(values) + if valuesCount == 0 { + return ERROR_INVALID_ARGUMENT + } return nvmlDeviceGetFieldValues(device, int32(valuesCount), &values[0]) } @@ -2907,6 +2916,9 @@ func (l *library) DeviceClearFieldValues(device Device, values []FieldValue) Ret func (device nvmlDevice) ClearFieldValues(values []FieldValue) Return { valuesCount := len(values) + if valuesCount == 0 { + return ERROR_INVALID_ARGUMENT + } return nvmlDeviceClearFieldValues(device, int32(valuesCount), &values[0]) } diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/init.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/init.go index 06e644419..b4ff77165 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/init.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/init.go @@ -34,12 +34,19 @@ func (l *library) InitWithFlags(flags uint32) Return { // nvml.Shutdown() func (l *library) Shutdown() Return { + l.Lock() + defer l.Unlock() + + if l.refcount == 0 { + return ERROR_UNINITIALIZED + } + ret := nvmlShutdown() if ret != SUCCESS { return ret } - err := l.close() + err := l.closeLocked() if err != nil { return ERROR_UNKNOWN } diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go index 5a7e6882f..9e84a7214 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go @@ -125,10 +125,14 @@ func (l *library) load() (rerr error) { // close the underlying library and ensure that the global pointer to the // library is set to nil to ensure that subsequent calls to open will reinitialize it. // Multiple calls to an already closed nvml library will return without error. -func (l *library) close() (rerr error) { +func (l *library) close() error { l.Lock() defer l.Unlock() + return l.closeLocked() +} + +func (l *library) closeLocked() (rerr error) { defer func() { l.refcount.DecOnNoError(rerr) }() if l.refcount != 1 { return nil diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h index dfd359c9b..d02cd6446 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h @@ -1,5 +1,5 @@ -/*** NVML VERSION: 13.4.61 ***/ -/*** From https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-13.4.61-archive.tar.xz ***/ +/*** NVML VERSION: 13.4.92 ***/ +/*** From https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-13.4.92-archive.tar.xz ***/ /* * Copyright 1993-2026 NVIDIA Corporation. All rights reserved. * @@ -706,16 +706,16 @@ typedef enum nvmlPcieUtilCounter_enum */ typedef enum nvmlValueType_enum { - NVML_VALUE_TYPE_DOUBLE = 0, - NVML_VALUE_TYPE_UNSIGNED_INT = 1, - NVML_VALUE_TYPE_UNSIGNED_LONG = 2, - NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3, - NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4, - NVML_VALUE_TYPE_SIGNED_INT = 5, - NVML_VALUE_TYPE_UNSIGNED_SHORT = 6, + NVML_VALUE_TYPE_DOUBLE = 0, //!< Double-precision floating-point value + NVML_VALUE_TYPE_UNSIGNED_INT = 1, //!< Unsigned 32-bit integer value + NVML_VALUE_TYPE_UNSIGNED_LONG = 2, //!< Unsigned long integer value + NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3, //!< Unsigned 64-bit integer value + NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4, //!< Signed 64-bit integer value + NVML_VALUE_TYPE_SIGNED_INT = 5, //!< Signed 32-bit integer value + NVML_VALUE_TYPE_UNSIGNED_SHORT = 6, //!< Unsigned 16-bit integer value // Keep this last - NVML_VALUE_TYPE_COUNT + NVML_VALUE_TYPE_COUNT //!< Maximum value above +1 }nvmlValueType_t; /** @@ -1698,11 +1698,11 @@ typedef struct typedef nvmlPlatformInfo_v2_t nvmlPlatformInfo_t; #define nvmlPlatformInfo_v2 NVML_STRUCT_VERSION(PlatformInfo, 2) //!< Version macro for \a nvmlPlatformInfo_v2_t -/** - * Structure to store hostname information - */ #define NVML_DEVICE_HOSTNAME_BUFFER_SIZE 64 //!< Buffer size for hostname string. +/** + * Stores the hostname string assigned to a GPU device. + */ typedef struct { char value[NVML_DEVICE_HOSTNAME_BUFFER_SIZE]; //!< null-terminated hostname string @@ -1750,6 +1750,9 @@ typedef struct nvmlRemappedRowsInfo_v2_t #define NVML_RUSD_POLL_PROC_UTIL 0x80 //!< Enable RUSD polling on process utilization group #define NVML_RUSD_POLL_ALL 0xFFFFFFFFFFFFFFFF //!< Enable RUSD polling on all groups +/** + * Stores RUSD polling configuration for a GPU. + */ typedef struct { unsigned int version; @@ -1897,6 +1900,9 @@ typedef struct #define nvmlPowerValue_v2 NVML_STRUCT_VERSION(PowerValue, 2) //!< Version macro for \a nvmlPowerValue_v2_t +/** + * Stores Adaptive TGP Mode state and telemetry for a GPU. + */ typedef struct { nvmlEnableState_t inBandEnableRequest; //!< [out] In-band enable requested (NVML_FEATURE_ENABLED) or not requested (NVML_FEATURE_DISABLED) @@ -3551,7 +3557,7 @@ typedef enum #define NVML_OPERATIONAL_EVENT_ATTR_COMPONENT_RESET (1u << 3) //!< Event involved a component reset. #define NVML_OPERATIONAL_EVENT_ATTR_THRESHOLD_EXCEEDED (1u << 4) //!< Event reports an exceeded threshold. #define NVML_OPERATIONAL_EVENT_ATTR_PRIMARY (1u << 5) //!< Event is the primary event in its group. -#define NVML_OPERATIONAL_EVENT_ATTR_OVERFLOW (1u << 6) //!< One or more events or associated payloads were dropped before this event was returned. +#define NVML_OPERATIONAL_EVENT_ATTR_OVERFLOW (1u << 6) //!< Source reported that event records were dropped at the source. #define NVML_OPERATIONAL_EVENT_GROUP_ATTR_RECOVERED (1u << 0) //!< Event group reports a recovered condition. #define NVML_OPERATIONAL_EVENT_GROUP_ATTR_PREVERR (1u << 1) //!< Event group reports a previous error condition. @@ -4626,7 +4632,7 @@ typedef struct unsigned int moduleInstance; //!< [out] Structured event module instance identifier. 0 for NVML event-bit events. unsigned int chipletId; //!< [out] Structured event chiplet identifier. 0 for NVML event-bit events. unsigned int logLevel; //!< [out] \ref nvmlGpuOperationalEventLogLevel_t value for structured GPU Operational Events. May contain newer log-level values not named in this header. \c NVML_GPU_OPERATIONAL_EVENT_LOG_LEVEL_ALL for NVML event-bit events. - unsigned int attributes; //!< [out] Bitmask of \c NVML_OPERATIONAL_EVENT_ATTR_* values for structured events. May contain newer bits not named in this header. 0 for NVML event-bit events. May include \c NVML_OPERATIONAL_EVENT_ATTR_OVERFLOW if events or associated payloads were dropped. + unsigned int attributes; //!< [out] Bitmask of \c NVML_OPERATIONAL_EVENT_ATTR_* values for structured events. May contain newer bits not named in this header. 0 for NVML event-bit events. unsigned int groupCperSize; //!< [out] Associated CPER record size in bytes. 0 when unavailable. unsigned int groupAttributes; //!< [out] Bitmask of \c NVML_OPERATIONAL_EVENT_GROUP_ATTR_* values for structured events. May contain newer bits not named in this header. 0 for NVML event-bit events. unsigned char groupSize; //!< [out] Total number of events in the structured event group. 0 for NVML event-bit events. @@ -4733,7 +4739,7 @@ nvmlReturn_t DECLDIR nvmlSystemGetNVMLVersion(char *version, unsigned int length * * For all products. * - * The CUDA driver version returned will be retreived from the currently installed version of CUDA. + * The CUDA driver version returned will be retrieved from the currently installed version of CUDA. * If the cuda library is not found, this function will return a known supported version number. * * @param cudaDriverVersion Reference in which to return the version identifier @@ -8421,7 +8427,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice_t device, u * @param type The PCI Bus type * * return - * - \ref NVML_SUCCESS if the bus \a type is successfully retreived + * - \ref NVML_SUCCESS if the bus \a type is successfully retrieved * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a type is NULL * - \ref NVML_ERROR_UNKNOWN on any unexpected error @@ -8695,7 +8701,7 @@ nvmlReturn_t DECLDIR nvmlSystemSetConfComputeGpusReadyState(unsigned int isAccep * @param pKeyRotationThrInfo Reference to the key rotation threshold data * * @return - * - \ref NVML_SUCCESS if \a key rotation threashold max attacker advantage has been set + * - \ref NVML_SUCCESS if \a key rotation threshold max attacker advantage has been set * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a memory is NULL * - \ref NVML_ERROR_INVALID_STATE if confidential compute GPU ready state is enabled @@ -8734,7 +8740,7 @@ nvmlReturn_t DECLDIR nvmlSystemGetConfComputeSettings(nvmlSystemConfComputeSetti * @param version The retrieved GSP firmware version * * @return - * - \ref NVML_SUCCESS if GSP firmware version is sucessfully retrieved + * - \ref NVML_SUCCESS if GSP firmware version is successfully retrieved * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or GSP \a version pointer is NULL * - \ref NVML_ERROR_NOT_SUPPORTED if GSP firmware is not enabled for GPU * - \ref NVML_ERROR_UNKNOWN on any unexpected error @@ -8752,7 +8758,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGspFirmwareVersion(nvmlDevice_t device, char * * @param defaultMode Pointer to specify if GSP firmware is supported by default on \a device * * @return - * - \ref NVML_SUCCESS if GSP firmware mode is sucessfully retrieved + * - \ref NVML_SUCCESS if GSP firmware mode is successfully retrieved * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or any of \a isEnabled or \a defaultMode is NULL * - \ref NVML_ERROR_NOT_SUPPORTED if GSP firmware is not enabled for GPU * - \ref NVML_ERROR_UNKNOWN on any unexpected error @@ -10872,10 +10878,8 @@ nvmlReturn_t DECLDIR nvmlEventSetGetContextCount_v1(nvmlEventSet_t set, * * The returned metadata identifies the NVML public interpretation, the source-defined context payload * type, payload size, and payload format version. The raw payload for any context record can be - * copied with \ref nvmlEventSetGetContextData_v1 and decoded using the public operational event - * schema or documentation for - * \ref nvmlEventSetGetContextInfo_v1_t::sourceEventContextType. When - * \c nvmlGpuOperationalEventContextType names a type-specific accessor, callers may use that + * copied with \ref nvmlEventSetGetContextData_v1. + * When \c nvmlGpuOperationalEventContextType names a type-specific accessor, callers may use that * accessor instead. Metadata is replaced by the next successful call to \ref nvmlEventSetWait_v3 * on the same event set. * @@ -12211,7 +12215,7 @@ nvmlReturn_t DECLDIR nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance_t vgpuIns * @param length Size of the vgpuPciId buffer * * @return -* - \ref NVML_SUCCESS if vGPU PCI Id is sucessfully retrieved +* - \ref NVML_SUCCESS if vGPU PCI Id is successfully retrieved * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuInstance is 0, or \a vgpuPciId is NULL * - \ref NVML_ERROR_NOT_FOUND if \a vgpuInstance does not match a valid active vGPU instance on the system @@ -13354,7 +13358,7 @@ typedef struct * * Supported on Linux only. * - * @param device Identifer of target GPU device + * @param device Identifier of target GPU device * @param buffer Structure holding the input data in TLV format as well as * the PRM register contents in TLV format (in the case of a successful * read operation). @@ -13454,7 +13458,7 @@ typedef struct * * Supported on Linux only. * - * @param device Identifer of target GPU device + * @param device Identifier of target GPU device * @param counterList Structure holding the input parameters as well as the retrieved counter values * * @return @@ -15208,6 +15212,9 @@ typedef struct */ /***************************************************************************************************/ #define NVML_WORKLOAD_POWER_MAX_PROFILES (255) +/** + * Workload power profile identifiers. + */ typedef enum { NVML_POWER_PROFILE_MAX_P = 0, @@ -15481,7 +15488,7 @@ typedef struct unsigned int version; //!< the API version number unsigned int profileId; //!< The requested profile ID - unsigned int paramId; //!< The requested paramater ID + unsigned int paramId; //!< The requested parameter ID double value; //!< The requested value for the given parameter } nvmlPowerSmoothingProfile_v1_t; typedef nvmlPowerSmoothingProfile_v1_t nvmlPowerSmoothingProfile_t; @@ -15566,6 +15573,9 @@ nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingSetState(nvmlDevice_t device, nvmlPowerSmoothingState_t *state); /** @} */ // @defgroup +/** @addtogroup nvmlDeviceQueries + * @{ + */ /** * Retrieves the counts of SRAM unique uncorrected ECC errors * @@ -15604,7 +15614,11 @@ nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingSetState(nvmlDevice_t device, */ nvmlReturn_t DECLDIR nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice_t device, nvmlEccSramUniqueUncorrectedErrorCounts_t *errorCounts); +/** @} */ +/** @addtogroup nvmlDeviceQueries + * @{ + */ /** * Get the status of row remapper. * @@ -15623,7 +15637,11 @@ nvmlReturn_t DECLDIR nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice * - \ref NVML_ERROR_UNKNOWN Unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetRemappedRows_v2(nvmlDevice_t device, nvmlRemappedRowsInfo_v2_t *info); +/** @} */ +/** @addtogroup nvmlDeviceCommands + * @{ + */ /** * Set Read-only user shared data (RUSD) settings for GPU. * Requires root/admin permissions. @@ -15640,7 +15658,11 @@ nvmlReturn_t DECLDIR nvmlDeviceGetRemappedRows_v2(nvmlDevice_t device, nvmlRemap * **/ nvmlReturn_t DECLDIR nvmlDeviceSetRusdSettings_v1(nvmlDevice_t device, nvmlRusdSettings_v1_t *settings); +/** @} */ +/** @addtogroup nvmlDeviceStructs + * @{ + */ /** * Structure to store bank remapper histogram */ @@ -15660,14 +15682,18 @@ typedef struct unsigned int bPending; //!< Whether there exists any pending bank remapping. 0 for no pending remapping, 1 for pending remapping. nvmlEccBankRemapperHistogram_v1_t histogram; //!< Bank remapper histogram } nvmlEccBankRemapperStatus_v1_t; +/** @} */ +/** @addtogroup nvmlDeviceQueries + * @{ + */ /** * Get bank remapper status. * * %RUBIN_OR_NEWER% * * @param device The identifier of the target device - * @param pBankRemapperStatus Reference to \a nvmlEccBankRemapperStatus_t + * @param pBankRemapperStatus Reference to \ref nvmlEccBankRemapperStatus_v1_t * * @return * - \ref NVML_SUCCESS if \a pBankRemapperStatus was populated @@ -15679,6 +15705,7 @@ typedef struct */ nvmlReturn_t DECLDIR nvmlDeviceGetBankRemapperStatus_v1(nvmlDevice_t device, nvmlEccBankRemapperStatus_v1_t *pBankRemapperStatus); +/** @} */ /** * NVML API versioning support diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/return.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/return.go index 1aec3ecc3..6df67a5ab 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/return.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/return.go @@ -95,6 +95,14 @@ var defaultErrorStringFunc = func(r Return) string { return "ERROR_ARGUMENT_VERSION_MISMATCH" case ERROR_DEPRECATED: return "ERROR_DEPRECATED" + case ERROR_NOT_READY: + return "ERROR_NOT_READY" + case ERROR_GPU_NOT_FOUND: + return "ERROR_GPU_NOT_FOUND" + case ERROR_INVALID_STATE: + return "ERROR_INVALID_STATE" + case ERROR_RESET_TYPE_NOT_SUPPORTED: + return "ERROR_RESET_TYPE_NOT_SUPPORTED" case ERROR_UNKNOWN: return "ERROR_UNKNOWN" default: diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go index a0dc2fdd2..cbac602eb 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go @@ -77,6 +77,9 @@ func (l *library) SystemGetTopologyGpuSet(cpuNumber int) ([]Device, Return) { } deviceArray := make([]nvmlDevice, count) ret = nvmlSystemGetTopologyGpuSet(uint32(cpuNumber), &count, &deviceArray[0]) + if ret == SUCCESS { + deviceArray = deviceArray[:count] + } return convertSlice[nvmlDevice, Device](deviceArray), ret } diff --git a/vendor/modules.txt b/vendor/modules.txt index 511e8d717..6768b9839 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -15,7 +15,7 @@ github.com/NVIDIA/go-nvlib/pkg/nvpci github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio github.com/NVIDIA/go-nvlib/pkg/pciids -# github.com/NVIDIA/go-nvml v0.13.4-0 +# github.com/NVIDIA/go-nvml v0.13.4-1 ## explicit; go 1.20 github.com/NVIDIA/go-nvml/pkg/dl github.com/NVIDIA/go-nvml/pkg/nvml