Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nvidia-settings for openSUSE:Factory
checked in at 2025-02-09 19:59:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nvidia-settings (Old)
and /work/SRC/openSUSE:Factory/.nvidia-settings.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nvidia-settings"
Sun Feb 9 19:59:22 2025 rev:7 rq:1243982 version:570.86.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/nvidia-settings/nvidia-settings.changes
2024-12-08 11:38:01.683859032 +0100
+++
/work/SRC/openSUSE:Factory/.nvidia-settings.new.2316/nvidia-settings.changes
2025-02-09 19:59:42.314135140 +0100
@@ -1,0 +2,6 @@
+Tue Jan 28 03:39:35 UTC 2025 - Stefan Dirsch <[email protected]>
+
+- update to release 570.86.16
+ --> https://github.com/NVIDIA/nvidia-settings/commit/e55a7ed
+
+-------------------------------------------------------------------
Old:
----
nvidia-settings-565.77.tar.bz2
New:
----
nvidia-settings-570.86.16.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nvidia-settings.spec ++++++
--- /var/tmp/diff_new_pack.4ZyOi9/_old 2025-02-09 19:59:42.842156849 +0100
+++ /var/tmp/diff_new_pack.4ZyOi9/_new 2025-02-09 19:59:42.842156849 +0100
@@ -1,7 +1,7 @@
#
# spec file for package nvidia-settings
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: nvidia-settings
-Version: 565.77
+Version: 570.86.16
Release: 0
Summary: Configure the NVIDIA graphics driver
License: GPL-2.0-only
++++++ nvidia-settings-565.77.tar.bz2 -> nvidia-settings-570.86.16.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/doc/version.mk
new/nvidia-settings-570.86.16/doc/version.mk
--- old/nvidia-settings-565.77/doc/version.mk 2024-11-28 01:00:40.000000000
+0100
+++ new/nvidia-settings-570.86.16/doc/version.mk 2025-01-24
23:03:57.000000000 +0100
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 565.77
+NVIDIA_VERSION = 570.86.16
# This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/samples/version.mk
new/nvidia-settings-570.86.16/samples/version.mk
--- old/nvidia-settings-565.77/samples/version.mk 2024-11-28
01:00:40.000000000 +0100
+++ new/nvidia-settings-570.86.16/samples/version.mk 2025-01-24
23:03:57.000000000 +0100
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 565.77
+NVIDIA_VERSION = 570.86.16
# This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/src/libXNVCtrl/utils.mk
new/nvidia-settings-570.86.16/src/libXNVCtrl/utils.mk
--- old/nvidia-settings-565.77/src/libXNVCtrl/utils.mk 2024-11-28
01:00:41.000000000 +0100
+++ new/nvidia-settings-570.86.16/src/libXNVCtrl/utils.mk 2025-01-24
23:03:57.000000000 +0100
@@ -541,6 +541,8 @@
ifeq ($(DEBUG),1)
NVIDSTRING_BUILD_TYPE_STRING = Debug Build
+else ifeq ($(DEVELOP),1)
+ NVIDSTRING_BUILD_TYPE_STRING = Develop Build
else
NVIDSTRING_BUILD_TYPE_STRING = Release Build
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/src/libXNVCtrl/version.mk
new/nvidia-settings-570.86.16/src/libXNVCtrl/version.mk
--- old/nvidia-settings-565.77/src/libXNVCtrl/version.mk 2024-11-28
01:00:40.000000000 +0100
+++ new/nvidia-settings-570.86.16/src/libXNVCtrl/version.mk 2025-01-24
23:03:57.000000000 +0100
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 565.77
+NVIDIA_VERSION = 570.86.16
# This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributes.c
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributes.c
--- old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributes.c
2024-11-28 01:00:41.000000000 +0100
+++ new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributes.c
2025-01-24 23:03:57.000000000 +0100
@@ -1341,6 +1341,8 @@
return "Attribute not available"; break;
case NvCtrlNotSupported:
return "Operation not supported"; break;
+ case NvCtrlNoPermission:
+ return "Operation not permitted for the current user"; break;
case NvCtrlError: /* fall through to default */
default:
return "Unknown Error"; break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributes.h
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributes.h
--- old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributes.h
2024-11-28 01:00:41.000000000 +0100
+++ new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributes.h
2025-01-24 23:03:57.000000000 +0100
@@ -319,6 +319,7 @@
NvCtrlWriteOnlyAttribute,
NvCtrlAttributeNotAvailable,
NvCtrlNotSupported,
+ NvCtrlNoPermission,
NvCtrlError
} ReturnStatus;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributesNvml.c
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributesNvml.c
--- old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributesNvml.c
2024-11-28 01:00:41.000000000 +0100
+++
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributesNvml.c
2025-01-24 23:03:57.000000000 +0100
@@ -269,6 +269,13 @@
GET_SYMBOL(_OPTIONAL, DeviceGetThermalSettings);
GET_SYMBOL(_OPTIONAL, DeviceGetFanSpeedRPM);
GET_SYMBOL(_OPTIONAL, DeviceGetCoolerInfo);
+ GET_SYMBOL(_OPTIONAL, DeviceGetClockOffsets);
+ GET_SYMBOL(_OPTIONAL, DeviceSetClockOffsets);
+ GET_SYMBOL(_OPTIONAL, DeviceGetPerformanceModes);
+ GET_SYMBOL(_OPTIONAL, DeviceGetCurrentClockFreqs);
+ GET_SYMBOL(_OPTIONAL, DeviceGetPerformanceState);
+ GET_SYMBOL(_OPTIONAL, DeviceGetSupportedPerformanceStates);
+ GET_SYMBOL(_OPTIONAL, DeviceGetArchitecture);
#undef GET_SYMBOL
#undef EXPAND_STRING
#undef STRINGIFY_SYMBOL
@@ -596,7 +603,7 @@
static ReturnStatus NvCtrlNvmlGetGPUStringAttribute(const CtrlTarget
*ctrl_target,
int attr, char **ptr)
{
- char res[MAX_NVML_STR_LEN];
+ char res[NVML_PERF_MODES_BUFFER_SIZE];
const NvCtrlAttributePrivateHandle *h = getPrivateHandleConst(ctrl_target);
const NvCtrlNvmlAttributes *nvml;
nvmlDevice_t device;
@@ -647,9 +654,31 @@
break;
}
- case NV_CTRL_STRING_SLI_MODE:
case NV_CTRL_STRING_PERFORMANCE_MODES:
+ {
+ nvmlDevicePerfModes_t perfModes;
+
+ perfModes.version = nvmlDevicePerfModes_v1;
+ ret = nvml->lib.DeviceGetPerformanceModes(device, &perfModes);
+ if (ret == NVML_SUCCESS) {
+ strcpy(res, perfModes.str);
+ }
+ break;
+ }
+
case NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS:
+ {
+ nvmlDeviceCurrentClockFreqs_t currentClockFreqs;
+
+ currentClockFreqs.version = nvmlDeviceCurrentClockFreqs_v1;
+ ret = nvml->lib.DeviceGetCurrentClockFreqs(device,
¤tClockFreqs);
+ if (ret == NVML_SUCCESS) {
+ strcpy(res, currentClockFreqs.str);
+ }
+ break;
+ }
+
+ case NV_CTRL_STRING_SLI_MODE:
case NV_CTRL_STRING_MULTIGPU_MODE:
/*
* XXX We'll eventually need to add support for this attributes
@@ -809,7 +838,74 @@
}
}
+static nvmlReturn_t nvmlClockOffsetHelper(nvmlDevice_t device,
+ const NvCtrlNvmlAttributes *nvml,
+ int attr, int64_t *val,
+ CtrlAttributeValidValues
*valid_values,
+ int *setVal)
+{
+ nvmlReturn_t ret;
+
+ switch (attr) {
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ {
+ nvmlDeviceArchitecture_t arch;
+
+ /* attributes are supported on Maxwell GPUs only */
+ ret = nvml->lib.DeviceGetArchitecture(device, &arch);
+ if ((ret != NVML_SUCCESS) || (arch !=
NVML_DEVICE_ARCH_MAXWELL)) {
+ return NVML_ERROR_NOT_SUPPORTED;
+ }
+ /* fallthrough to case
+ * NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS */
+ __attribute__((fallthrough));
+ }
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ {
+ nvmlClockOffset_t info;
+
+ switch (attr) {
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ info.type = NVML_CLOCK_GRAPHICS;
+ break;
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case
NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ info.type = NVML_CLOCK_MEM;
+ break;
+ }
+ info.version = nvmlClockOffset_v1;
+ info.pstate = NVML_PSTATE_0;
+ if (val || valid_values) {
+ /* get current clock offset and valid values */
+ ret = nvml->lib.DeviceGetClockOffsets(device, &info);
+
+ if (ret != NVML_SUCCESS) {
+ return ret;
+ }
+ if (val) {
+ *val = info.clockOffsetMHz;
+ }
+ if (valid_values) {
+ valid_values->valid_type =
CTRL_ATTRIBUTE_VALID_TYPE_RANGE;
+ valid_values->range.min = info.minClockOffsetMHz;
+ valid_values->range.max = info.maxClockOffsetMHz;
+ }
+ return NVML_SUCCESS;
+ }
+ if (setVal) {
+ /* set new clock offset value */
+ info.clockOffsetMHz = *setVal;
+ ret = nvml->lib.DeviceSetClockOffsets(device, &info);
+ return ret;
+ }
+ }
+ }
+ return NVML_SUCCESS;
+}
/*
* Get NVML Attribute Values
@@ -1069,11 +1165,45 @@
}
break;
+ case NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL:
+ {
+ nvmlPstates_t pState;
+ nvmlPstates_t pStates[NVML_MAX_GPU_PERF_PSTATES];
+ nvmlReturn_t ret1;
+ int i = 0;
+
+ ret = nvml->lib.DeviceGetPerformanceState(device, &pState);
+ ret1 =
nvml->lib.DeviceGetSupportedPerformanceStates(device, pStates,
NVML_MAX_GPU_PERF_PSTATES);
+ if ((ret != NVML_SUCCESS) || (ret1 != NVML_SUCCESS)) {
+ return NvCtrlNotSupported;
+ }
+
+ for (i = 0; i < NVML_MAX_GPU_PERF_PSTATES; i++) {
+ if (pStates[i] == NVML_PSTATE_UNKNOWN) {
+ continue;
+ }
+ if (pStates[i] == pState) {
+ res = i;
+ break;
+ }
+ }
+ }
+ break;
+
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ ret = nvmlClockOffsetHelper(device, nvml, attr, val, NULL,
NULL);
+ if (ret == NVML_SUCCESS) {
+ return NvCtrlSuccess;
+ }
+ break;
+
case NV_CTRL_VIDEO_RAM:
case NV_CTRL_GPU_PCIE_MAX_LINK_SPEED:
case NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED:
case NV_CTRL_BUS_TYPE:
- case NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL:
case NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE:
case NV_CTRL_GPU_POWER_MIZER_MODE:
case NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE:
@@ -1678,6 +1808,13 @@
}
break;
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ ret = nvmlClockOffsetHelper(device, nvml, attr, NULL, NULL,
&val);
+ break;
+
case NV_CTRL_GPU_CURRENT_CLOCK_FREQS:
case NV_CTRL_GPU_POWER_MIZER_MODE:
case NV_CTRL_DITHERING:
@@ -1708,6 +1845,9 @@
/* An NVML error occurred */
printNvmlError(ret);
+ if (ret == NVML_ERROR_NO_PERMISSION) {
+ return NvCtrlNoPermission;
+ }
return NvCtrlNotSupported;
}
@@ -1758,6 +1898,9 @@
/* An NVML error occurred */
printNvmlError(ret);
+ if (ret == NVML_ERROR_NO_PERMISSION) {
+ return NvCtrlNoPermission;
+ }
return NvCtrlNotSupported;
}
@@ -2040,13 +2183,13 @@
case NV_CTRL_STRING_PRODUCT_NAME:
case NV_CTRL_STRING_VBIOS_VERSION:
case NV_CTRL_STRING_GPU_UUID:
+ case NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS:
+ case NV_CTRL_STRING_PERFORMANCE_MODES:
val->valid_type = CTRL_ATTRIBUTE_VALID_TYPE_STRING;
return NvCtrlSuccess;
case NV_CTRL_STRING_SLI_MODE:
- case NV_CTRL_STRING_PERFORMANCE_MODES:
case NV_CTRL_STRING_MULTIGPU_MODE:
- case NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS:
case NV_CTRL_STRING_GPU_UTILIZATION:
/*
* XXX We'll eventually need to add support for this attributes.
For
@@ -2190,9 +2333,17 @@
case NV_CTRL_ATTR_NVML_GPU_GET_POWER_USAGE:
case NV_CTRL_ATTR_NVML_GPU_MAX_TGP:
case NV_CTRL_ATTR_NVML_GPU_DEFAULT_TGP:
+ case NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL:
val->valid_type = CTRL_ATTRIBUTE_VALID_TYPE_INTEGER;
break;
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ ret = nvmlClockOffsetHelper(device, nvml, attr, NULL, val,
NULL);
+ break;
+
case NV_CTRL_GPU_ECC_SUPPORTED:
case NV_CTRL_GPU_ECC_STATUS:
case NV_CTRL_GPU_ECC_CONFIGURATION:
@@ -2220,7 +2371,6 @@
case NV_CTRL_GPU_PCIE_MAX_LINK_SPEED:
case NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED:
case NV_CTRL_BUS_TYPE:
- case NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL:
case NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE:
case NV_CTRL_GPU_POWER_MIZER_MODE:
case NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE:
@@ -2466,6 +2616,10 @@
{
/* Set write permissions */
switch (attr) {
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
case NV_CTRL_GPU_COOLER_MANUAL_CONTROL:
case NV_CTRL_THERMAL_COOLER_LEVEL:
case NV_CTRL_GPU_ECC_CONFIGURATION:
@@ -2509,7 +2663,14 @@
case NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS:
case NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS:
case NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS:
+ case NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET:
+ case NV_CTRL_GPU_NVCLOCK_OFFSET:
/* CTRL_ATTRIBUTE_VALID_TYPE_INT_BITS */
+ perms->read = NV_TRUE;
+ perms->valid_targets = CTRL_TARGET_PERM_BIT(GPU_TARGET);
+ break;
/* GPU_TARGET non-readable attribute */
case NV_CTRL_GPU_ECC_RESET_ERROR_STATUS:
perms->read = NV_FALSE;
@@ -2551,6 +2712,8 @@
case NV_CTRL_STRING_PRODUCT_NAME:
case NV_CTRL_STRING_VBIOS_VERSION:
case NV_CTRL_STRING_GPU_UUID:
+ case NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS:
+ case NV_CTRL_STRING_PERFORMANCE_MODES:
perms->valid_targets = CTRL_TARGET_PERM_BIT(GPU_TARGET);
perms->read = NV_TRUE;
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
---
old/nvidia-settings-565.77/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
2024-11-28 01:00:41.000000000 +0100
+++
new/nvidia-settings-570.86.16/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
2025-01-24 23:03:57.000000000 +0100
@@ -210,6 +210,13 @@
typeof(nvmlDeviceGetThermalSettings)
(*DeviceGetThermalSettings);
typeof(nvmlDeviceGetFanSpeedRPM)
(*DeviceGetFanSpeedRPM);
typeof(nvmlDeviceGetCoolerInfo)
(*DeviceGetCoolerInfo);
+ typeof(nvmlDeviceGetSupportedPerformanceStates)
(*DeviceGetSupportedPerformanceStates);
+ typeof(nvmlDeviceGetClockOffsets)
(*DeviceGetClockOffsets);
+ typeof(nvmlDeviceSetClockOffsets)
(*DeviceSetClockOffsets);
+ typeof(nvmlDeviceGetPerformanceModes)
(*DeviceGetPerformanceModes);
+ typeof(nvmlDeviceGetCurrentClockFreqs)
(*DeviceGetCurrentClockFreqs);
+ typeof(nvmlDeviceGetPerformanceState)
(*DeviceGetPerformanceState);
+ typeof(nvmlDeviceGetArchitecture)
(*DeviceGetArchitecture);
} lib;
unsigned int deviceIdx; /* XXX Needed while using NV-CONTROL as fallback */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/src/nvml.h
new/nvidia-settings-570.86.16/src/nvml.h
--- old/nvidia-settings-565.77/src/nvml.h 2024-11-28 01:00:41.000000000
+0100
+++ new/nvidia-settings-570.86.16/src/nvml.h 2025-01-24 23:03:57.000000000
+0100
@@ -764,6 +764,18 @@
#define nvmlFlagForce 0x01
/**
+ * DRAM Encryption Info
+ */
+typedef struct
+{
+ unsigned int version; //!< IN - the API version number
+ nvmlEnableState_t encryptionState; //!< IN/OUT - DRAM Encryption state
+} nvmlDramEncryptionInfo_v1_t;
+typedef nvmlDramEncryptionInfo_v1_t nvmlDramEncryptionInfo_t;
+
+#define nvmlDramEncryptionInfo_v1 NVML_STRUCT_VERSION(DramEncryptionInfo, 1)
+
+/**
* * The Brand of the GPU
* */
typedef enum nvmlBrandType_enum
@@ -828,6 +840,19 @@
} nvmlTemperatureSensors_t;
/**
+ * Margin temperature values
+ */
+typedef struct
+{
+ unsigned int version; //!< The version number of this struct
+ int marginTemperature; //!< The margin temperature value
+} nvmlMarginTemperature_v1_t;
+
+typedef nvmlMarginTemperature_v1_t nvmlMarginTemperature_t;
+
+#define nvmlMarginTemperature_v1 NVML_STRUCT_VERSION(MarginTemperature, 1)
+
+/**
* Compute mode.
*
* NVML_COMPUTEMODE_EXCLUSIVE_PROCESS was added in CUDA 4.0.
@@ -1115,7 +1140,7 @@
NVML_INFOROM_OEM = 0, //!< An object defined by OEM
NVML_INFOROM_ECC = 1, //!< The ECC object determining the
level of ECC support
NVML_INFOROM_POWER = 2, //!< The power management object
-
+ NVML_INFOROM_DEN = 3, //!< DRAM Encryption object
// Keep this last
NVML_INFOROM_COUNT //!< This counts the number of
infoROM objects the driver knows about
} nvmlInforomObject_t;
@@ -1516,15 +1541,16 @@
*/
typedef enum nvmlDeviceVgpuCapability_enum
{
- NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU = 0, //!< Query
if the fractional vGPU profiles on this GPU can be used in multi-vGPU
configurations
- NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES = 1, //!< Query
if the GPU support concurrent execution of timesliced vGPU profiles of
differing types
- NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES = 2, //!< Query
if the GPU support concurrent execution of timesliced vGPU profiles of
differing framebuffer sizes
+ NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU = 0, //!< Query
whether the fractional vGPU profiles on this GPU can be used in multi-vGPU
configurations
+ NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES = 1, //!< Query
whether the GPU support concurrent execution of timesliced vGPU profiles of
differing types
+ NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES = 2, //!< Query
whether the GPU support concurrent execution of timesliced vGPU profiles of
differing framebuffer sizes
NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW = 3, //!< Query
the GPU's read_device_buffer expected bandwidth capacity in megabytes per second
NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW = 4, //!< Query
the GPU's write_device_buffer expected bandwidth capacity in megabytes per
second
- NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING = 5, //!< Query
if vGPU profiles on the GPU supports migration data streaming
+ NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING = 5, //!< Query
whether the vGPU profiles on the GPU supports migration data streaming
NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU = 6, //!< Set/Get
support for mini-quarter vGPU profiles
NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU = 7, //!< Set/Get
support for compute media engine vGPU profiles
- NVML_DEVICE_VGPU_CAP_WARM_UPDATE = 8, //!< Query
if the GPU supports FSR and warm update
+ NVML_DEVICE_VGPU_CAP_WARM_UPDATE = 8, //!< Query
whether the GPU supports FSR and warm update
+ NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS = 9, //!< Query
whether the GPU supports reporting of placements of timesliced vGPU profiles
with identical framebuffer sizes
// Keep this last
NVML_DEVICE_VGPU_CAP_COUNT
} nvmlDeviceVgpuCapability_t;
@@ -1567,6 +1593,12 @@
#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0
#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1
+/**
+ * Macros to indicate the vGPU mode of the GPU.
+ */
+#define NVML_VGPU_PGPU_HETEROGENEOUS_MODE 0
+#define NVML_VGPU_PGPU_HOMOGENEOUS_MODE 1
+
/** @} */
/***************************************************************************************************/
@@ -1611,10 +1643,23 @@
unsigned int count; //!< Count of placement IDs fetched
unsigned int *placementIds; //!< Placement IDs for the vGPU type
} nvmlVgpuPlacementList_v1_t;
-typedef nvmlVgpuPlacementList_v1_t nvmlVgpuPlacementList_t;
#define nvmlVgpuPlacementList_v1 NVML_STRUCT_VERSION(VgpuPlacementList, 1)
/**
+ * Structure to store the list of vGPU placements -- version 2
+ */
+typedef struct
+{
+ unsigned int version; //!< IN: The version number of this
struct
+ unsigned int placementSize; //!< OUT: The number of slots occupied
by the vGPU type
+ unsigned int count; //!< IN/OUT: Count of the placement IDs
+ unsigned int *placementIds; //!< IN/OUT: Placement IDs for the
vGPU type
+ unsigned int mode; //!< IN: The vGPU mode. Either
NVML_VGPU_PGPU_HETEROGENEOUS_MODE or NVML_VGPU_PGPU_HOMOGENEOUS_MODE
+} nvmlVgpuPlacementList_v2_t;
+typedef nvmlVgpuPlacementList_v2_t nvmlVgpuPlacementList_t;
+#define nvmlVgpuPlacementList_v2 NVML_STRUCT_VERSION(VgpuPlacementList, 2)
+
+/**
* Structure to store BAR1 size information of vGPU type -- Version 1
*/
typedef struct
@@ -1912,6 +1957,7 @@
NVML_GPU_RECOVERY_ACTION_GPU_RESET = 1,
NVML_GPU_RECOVERY_ACTION_NODE_REBOOT = 2,
NVML_GPU_RECOVERY_ACTION_DRAIN_P2P = 3,
+ NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESET = 4,
} nvmlDeviceGpuRecoveryAction_t;
/** @} */
@@ -2236,9 +2282,9 @@
#define NVML_FI_DEV_PCIE_COUNT_TX_BYTES 197 //!< PCIe transmit
bytes. Value can be wrapped.
#define NVML_FI_DEV_PCIE_COUNT_RX_BYTES 198 //!< PCIe receive
bytes. Value can be wrapped.
-#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX 199 //!< Max Nvlink
Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD
+#define NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE 199 //!< MIG
mode independent, MIG query capable device. 1=yes. 0=no.
-#define NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE 200 //!< MIG
mode independent, MIG query capable device. 1=yes. 0=no.
+#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX 200 //!< Max
Nvlink Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD
#define NVML_FI_DEV_NVLINK_COUNT_XMIT_PACKETS 201 //!<Total
Tx packets on the link in NVLink5
#define NVML_FI_DEV_NVLINK_COUNT_XMIT_BYTES 202 //!<Total
Tx bytes on the link in NVLink5
@@ -2260,8 +2306,8 @@
#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0 216
//!<Deprecated, do not use
#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 217
//!<Deprecated, do not use
#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER 218
//!<Deprecated, do not use
-#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS 219
//!<Deprecated, do not use
-#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER 220
//!<Deprecated, do not use
+#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS 219 //!<Sum
of the number of errors in each Nvlink packet
+#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER 220
//!<Effective BER for effective errors
#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS 221
//!<Number of errors in rx symbols
#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_BER 222 //!<BER
for symbol errors
@@ -2269,12 +2315,48 @@
#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS 224 //!<
Values are in the form NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_*
#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED 225 //!<
Determine if Nvlink Power Threshold feature is supported
-#define NVML_FI_DEV_RESET_STATUS 226 //!< GPU
reset status
-#define NVML_FI_DEV_DRAIN_AND_RESET_STATUS 227 //!< GPU
drain and reset status
+#define NVML_FI_DEV_RESET_STATUS 226 //!<
Depracated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead)
+#define NVML_FI_DEV_DRAIN_AND_RESET_STATUS 227 //!<
Deprecated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead)
#define NVML_FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK 228
#define NVML_FI_DEV_PCIE_INBOUND_ATOMICS_MASK 229
-#define NVML_FI_DEV_GET_GPU_RECOVERY_ACTION 230 //!< GPU
Recovery action - None/Reset/Reboot/Drain P2P
-#define NVML_FI_MAX 231 //!< One
greater than the largest field ID defined above
+#define NVML_FI_DEV_GET_GPU_RECOVERY_ACTION 230 //!< GPU
Recovery action - None/Reset/Reboot/Drain P2P/Drain and Reset
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_0 235 //!<
Count of symbol errors that are corrected - bin 0
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_1 236 //!<
Count of symbol errors that are corrected - bin 1
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_2 237 //!<
Count of symbol errors that are corrected - bin 2
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_3 238 //!<
Count of symbol errors that are corrected - bin 3
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_4 239 //!<
Count of symbol errors that are corrected - bin 4
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_5 240 //!<
Count of symbol errors that are corrected - bin 5
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_6 241 //!<
Count of symbol errors that are corrected - bin 6
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_7 242 //!<
Count of symbol errors that are corrected - bin 7
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_8 243 //!<
Count of symbol errors that are corrected - bin 8
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_9 244 //!<
Count of symbol errors that are corrected - bin 9
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_10 245 //!<
Count of symbol errors that are corrected - bin 10
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_11 246 //!<
Count of symbol errors that are corrected - bin 11
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_12 247 //!<
Count of symbol errors that are corrected - bin 12
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_13 248 //!<
Count of symbol errors that are corrected - bin 13
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_14 249 //!<
Count of symbol errors that are corrected - bin 14
+#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_15 250 //!<
Count of symbol errors that are corrected - bin 15
+/* Power Smoothing */
+#define NVML_FI_PWR_SMOOTHING_ENABLED 251
//!< Enablement (0/DISABLED or 1/ENABLED)
+#define NVML_FI_PWR_SMOOTHING_PRIV_LVL 252
//!< Current privilege level
+#define NVML_FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED 253
//!< Immediate ramp down enablement (0/DISABLED or 1/ENABLED)
+#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_CEIL 254
//!< Applied TMP ceiling value in Watts
+#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR 255
//!< Applied TMP floor value in Watts
+#define NVML_FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING 256
//!< Max % TMP Floor value
+#define NVML_FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING 257
//!< Min % TMP Floor value
+#define NVML_FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING 258
//!< HW Circuitry % lifetime remaining
+#define NVML_FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES 259
//!< Max number of preset profiles
+#define NVML_FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR 260
//!< % TMP floor for a given profile
+#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE 261
//!< Ramp up rate in mW/s for a given profile
+#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE 262
//!< Ramp down rate in mW/s for a given profile
+#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL 263
//!< Ramp down hysteresis value in ms for a given profile
+#define NVML_FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE 264
//!< Active preset profile number
+#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR 265
//!< % TMP floor for a given profile
+#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE 266
//!< Ramp up rate in mW/s for a given profile
+#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE 267
//!< Ramp down rate in mW/s for a given profile
+#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL 268
//!< Ramp down hysteresis value in ms for a given profile
+
+#define NVML_FI_MAX 269
//!< One greater than the largest field ID defined above
/**
* NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS
@@ -2533,8 +2615,8 @@
{
nvmlDevice_t device; //!< Specific device where the
event occurred
unsigned long long eventType; //!< Information about what
specific event occurred
- unsigned long long eventData; //!< Stores XID error for the
device in the event of nvmlEventTypeXidCriticalError,
- // eventData is 0 for any other
event. eventData is set as 999 for unknown xid error.
+ unsigned long long eventData; //!< Stores Xid error for the
device in the event of nvmlEventTypeXidCriticalError,
+ // eventData is 0 for any other
event. eventData is set as 999 for unknown Xid error.
unsigned int gpuInstanceId; //!< If MIG is enabled and
nvmlEventTypeXidCriticalError event is attributable to a GPU
// instance, stores a valid GPU
instance ID. gpuInstanceId is set to 0xFFFFFFFF
// otherwise.
@@ -3016,12 +3098,45 @@
nvmlGpuFabricState_t state; //!< Current
state of GPU registration process
} nvmlGpuFabricInfo_t;
+/*
+ * Fabric Degraded BW
+ */
#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED 0
#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE 1
#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE 2
#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW 0
-#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW 0x11
+#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW 0x3
+
+/*
+ * Fabric Route Recovery
+ */
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED 0
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE 1
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE 2
+
+#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY 2
+#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY 0x3
+
+/*
+ * Nvlink Fabric Route Unhealthy
+ */
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED 0
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE 1
+#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE 2
+
+#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY 4
+#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY 0x3
+
+/*
+ * Fabric Access Timeout Recovery
+ */
+#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED 0
+#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE 1
+#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE 2
+
+#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY 6
+#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY 0x3
/**
* GPU Fabric Health Status Mask for various fields can be obtained
@@ -5000,6 +5115,22 @@
nvmlReturn_t DECLDIR nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device,
nvmlTemperatureThresholds_t thresholdType, unsigned int *temp);
/**
+ * Retrieves the thermal margin temperature (distance to nearest slowdown
threshold).
+ *
+ * @param[in] device The identifier of the
target device
+ * @param[in,out] marginTempInfo Versioned structure in
which to return the temperature reading
+ *
+ * @returns
+ * - \ref NVML_SUCCESS if the margin
temperature was retrieved successfully
+ * - \ref NVML_ERROR_NOT_SUPPORTED if request is not
supported on the current platform
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is
invalid or \a temperature is NULL
+ * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the right
versioned structure is not used
+ * - \ref NVML_ERROR_UNKNOWN on any unexpected
error
+ */
+nvmlReturn_t DECLDIR nvmlDeviceGetMarginTemperature(nvmlDevice_t device,
nvmlMarginTemperature_t *marginTempInfo);
+
+/**
* Used to execute a list of thermal system instructions.
*
* @param device The identifier of the target
device
@@ -5653,6 +5784,66 @@
nvmlReturn_t DECLDIR nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device,
int *major, int *minor);
/**
+ * Retrieves the current and pending DRAM Encryption modes for the device.
+ *
+ * %BLACKWELL_OR_NEWER%
+ * Only applicable to devices that support DRAM Encryption
+ * Requires \a NVML_INFOROM_DEN version 1.0 or higher.
+ *
+ * Changing DRAM Encryption modes requires a reboot. The "pending" DRAM
Encryption mode refers to the target mode following
+ * the next reboot.
+ *
+ * See \ref nvmlEnableState_t for details on allowed modes.
+ *
+ * @param device The identifier of the target
device
+ * @param current Reference in which to return
the current DRAM Encryption mode
+ * @param pending Reference in which to return
the pending DRAM Encryption mode
+ *
+ * @return
+ * - \ref NVML_SUCCESS if \a current and \a
pending have 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 either \a current or \a pending is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not
support this feature
+ * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version
is not supported
+ * - \ref NVML_ERROR_UNKNOWN on any unexpected error
+ *
+ * @see nvmlDeviceSetDramEncryptionMode()
+ */
+nvmlReturn_t DECLDIR nvmlDeviceGetDramEncryptionMode(nvmlDevice_t device,
nvmlDramEncryptionInfo_t *current, nvmlDramEncryptionInfo_t *pending);
+
+/**
+ * Set the DRAM Encryption mode for the device.
+ *
+ * For Kepler &tm; or newer fully supported devices.
+ * Only applicable to devices that support DRAM Encryption.
+ * Requires \a NVML_INFOROM_DEN version 1.0 or higher.
+ * Requires root/admin permissions.
+ *
+ * The DRAM Encryption mode determines whether the GPU enables its DRAM
Encryption support.
+ *
+ * This operation takes effect after the next reboot.
+ *
+ * See \ref nvmlEnableState_t for details on available modes.
+ *
+ * @param device The identifier of the target
device
+ * @param dramEncryption The target DRAM Encryption mode
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the DRAM Encryption
mode was 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 DRAM Encryption is invalid
+ * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not
support this feature
+ * - \ref NVML_ERROR_NO_PERMISSION if the user doesn't
have permission to perform this operation
+ * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version
is not supported
+ * - \ref NVML_ERROR_UNKNOWN on any unexpected error
+ *
+ * @see nvmlDeviceGetDramEncryptionMode()
+ */
+nvmlReturn_t DECLDIR nvmlDeviceSetDramEncryptionMode(nvmlDevice_t device,
const nvmlDramEncryptionInfo_t *dramEncryption);
+
+/**
* Retrieves the current and pending ECC modes for the device.
*
* For Fermi &tm; or newer fully supported devices.
@@ -6500,7 +6691,7 @@
* @param numCores The number of cores for the
specified device
*
* @return
- * - \ref NVML_SUCCESS if Gpu core count is
successfully retrieved
+ * - \ref NVML_SUCCESS if GPU core count 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
numCores is NULL
* - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported
by the device
@@ -6548,7 +6739,7 @@
* @param maxSpeed The devices's PCIE Max Link
speed in MBPS
*
* @return
- * - \ref NVML_SUCCESS if Pcie Max Link Speed is
successfully retrieved
+ * - \ref NVML_SUCCESS if PCIe Max Link Speed 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
maxSpeed is NULL
* - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported
by the device
@@ -6738,7 +6929,7 @@
nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice_t
device, nvmlMemory_t *memory);
/**
- * Get Conf Computing Gpu certificate details.
+ * Get Conf Computing GPU certificate details.
*
* For Ampere &tm; or newer fully supported devices.
* Supported on Linux, Windows TCC.
@@ -6757,7 +6948,7 @@
nvmlConfComputeGpuCertificate_t *gpuCert);
/**
- * Get Conf Computing Gpu attestation report.
+ * Get Conf Computing GPU attestation report.
*
* For Ampere &tm; or newer fully supported devices.
* Supported on Linux, Windows TCC.
@@ -7000,8 +7191,8 @@
*
* For Kepler &tm; or newer fully supported devices.
*
- * To just query the number of processes ready to be queried, call this
function with *count = 0 and
- * pids=NULL. The return code will be NVML_ERROR_INSUFFICIENT_SIZE, or
NVML_SUCCESS if list is empty.
+ * To query the number of processes under Accounting Mode, call this function
with *count = 0 and pids=NULL.
+ * The return code will be NVML_ERROR_INSUFFICIENT_SIZE with an updated count
value indicating the number of processes.
*
* For more details see \ref nvmlDeviceGetAccountingStats.
*
@@ -7059,7 +7250,7 @@
/**
* Returns the list of retired pages by source, including pages that are
pending retirement
* The address information provided from this API is the hardware address of
the page that was retired. Note
- * that this does not match the virtual address used in CUDA, but will match
the address information in XID 63
+ * that this does not match the virtual address used in CUDA, but will match
the address information in Xid 63
*
* For Kepler &tm; or newer fully supported devices.
*
@@ -7087,7 +7278,7 @@
/**
* Returns the list of retired pages by source, including pages that are
pending retirement
* The address information provided from this API is the hardware address of
the page that was retired. Note
- * that this does not match the virtual address used in CUDA, but will match
the address information in XID 63
+ * that this does not match the virtual address used in CUDA, but will match
the address information in Xid 63
*
* \note nvmlDeviceGetRetiredPages_v2 adds an additional timestamps parameter
to return the time of each page's
* retirement.
@@ -7307,7 +7498,7 @@
*
* %BLACKWELL_OR_NEWER%
*
- * See \ref nvmlPlatformInfo_t for more information on the struct.
+ * See \ref nvmlPlatformInfo_v1_t for more information on the struct.
*
* @param device The identifier of the target
device
* @param platformInfo Pointer to the caller-provided
structure of nvmlPlatformInfo_t.
@@ -8109,6 +8300,65 @@
*/
nvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device,
nvmlPowerValue_v2_t *powerValue);
+/***************************************************************************************************/
+/** @defgroup NVML NVLink
+ * @{
+ */
+/***************************************************************************************************/
+
+#define NVML_NVLINK_BER_MANTISSA_SHIFT 8
+#define NVML_NVLINK_BER_MANTISSA_WIDTH 0xf
+
+#define NVML_NVLINK_BER_EXP_SHIFT 0
+#define NVML_NVLINK_BER_EXP_WIDTH 0xff
+
+/**
+ * Nvlink Error counter BER can be obtained using the below macros
+ * Ex - NVML_NVLINK_ERROR_COUNTER_BER_GET(var, BER_MANTISSA)
+ */
+#define NVML_NVLINK_ERROR_COUNTER_BER_GET(var, type) \
+ (((var) >> NVML_NVLINK_##type##_SHIFT) & \
+ (NVML_NVLINK_##type##_WIDTH)) \
+
+/*
+ * NVML_FI_DEV_NVLINK_GET_STATE state enums
+ */
+#define NVML_NVLINK_STATE_INACTIVE 0x0
+#define NVML_NVLINK_STATE_ACTIVE 0x1
+#define NVML_NVLINK_STATE_SLEEP 0x2
+
+#define NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES 23
+
+typedef struct
+{
+ unsigned int version;
+ unsigned char bwModes[NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES];
+ unsigned char totalBwModes;
+} nvmlNvlinkSupportedBwModes_v1_t;
+typedef nvmlNvlinkSupportedBwModes_v1_t nvmlNvlinkSupportedBwModes_t;
+#define nvmlNvlinkSupportedBwModes_v1
NVML_STRUCT_VERSION(NvlinkSupportedBwModes, 1)
+
+typedef struct
+{
+ unsigned int version;
+ unsigned int bIsBest;
+ unsigned char bwMode;
+} nvmlNvlinkGetBwMode_v1_t;
+typedef nvmlNvlinkGetBwMode_v1_t nvmlNvlinkGetBwMode_t;
+#define nvmlNvlinkGetBwMode_v1 NVML_STRUCT_VERSION(NvlinkGetBwMode, 1)
+
+typedef struct
+{
+ unsigned int version;
+ unsigned int bSetBest;
+ unsigned char bwMode;
+} nvmlNvlinkSetBwMode_v1_t;
+typedef nvmlNvlinkSetBwMode_v1_t nvmlNvlinkSetBwMode_t;
+#define nvmlNvlinkSetBwMode_v1 NVML_STRUCT_VERSION(NvlinkSetBwMode, 1)
+
+/** @} */ // @defgroup NVML NVLink
+
+
/** @} */
/***************************************************************************************************/
@@ -8387,6 +8637,7 @@
* - \ref NVML_SUCCESS if the \a Threshold is
successfully 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
Threshold is not within range
+ * - \ref NVML_ERROR_NOT_READY if an internal driver setting
prevents the threshold from being used
* - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported
by the device
*
**/
@@ -8417,6 +8668,58 @@
*/
nvmlReturn_t DECLDIR nvmlSystemGetNvlinkBwMode(unsigned int *nvlinkBwMode);
+/**
+ * Get the supported NvLink Reduced Bandwidth Modes of the device
+ *
+ * %BLACKWELL_OR_NEWER%
+ *
+ * @param device The identifier of the
target device
+ * @param supportedBwMode Reference to \a
nvmlNvlinkSupportedBwModes_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the query was
successful
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
supportedBwMode is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not
supported by the device
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified
is not supported
+ **/
+nvmlReturn_t DECLDIR nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice_t device,
+
nvmlNvlinkSupportedBwModes_t *supportedBwMode);
+
+/**
+ * Get the NvLink Reduced Bandwidth Mode for the device
+ *
+ * %BLACKWELL_OR_NEWER%
+ *
+ * @param device The identifier of the
target device
+ * @param getBwMode Reference to \a
nvmlNvlinkGetBwMode_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the query was
successful
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
getBwMode is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not
supported by the device
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified
is not supported
+ **/
+nvmlReturn_t DECLDIR nvmlDeviceGetNvlinkBwMode(nvmlDevice_t device,
+ nvmlNvlinkGetBwMode_t
*getBwMode);
+
+/**
+ * Set the NvLink Reduced Bandwidth Mode for the device
+ *
+ * %BLACKWELL_OR_NEWER%
+ *
+ * @param device The identifier of the
target device
+ * @param setBwMode Reference to \a
nvmlNvlinkSetBwMode_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the Bandwidth mode
was successfully set
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
setBwMode is NULL
+ * - \ref NVML_ERROR_NO_PERMISSION if user does not have
permission to change Bandwidth mode
+ * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not
supported by the device
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified
is not supported
+ **/
+nvmlReturn_t DECLDIR nvmlDeviceSetNvlinkBwMode(nvmlDevice_t device,
+ nvmlNvlinkSetBwMode_t
*setBwMode);
+
/** @} */
/***************************************************************************************************/
@@ -8448,7 +8751,7 @@
* Starts recording of events on a specified devices and add the events to
specified \ref nvmlEventSet_t
*
* For Fermi &tm; or newer fully supported devices.
- * Ecc events are available only on ECC enabled devices (see \ref
nvmlDeviceGetTotalEccErrors)
+ * ECC events are available only on ECC-enabled devices (see \ref
nvmlDeviceGetTotalEccErrors)
* Power capping events are available only on Power Management enabled devices
(see \ref nvmlDeviceGetPowerManagementMode)
*
* For Linux only.
@@ -8514,11 +8817,11 @@
* but not longer than specified timeout. This function in certain conditions
can return before
* specified timeout passes (e.g. when interrupt arrives)
*
- * On Windows, in case of xid error, the function returns the most recent xid
error type seen by the system.
- * If there are multiple xid errors generated before nvmlEventSetWait is
invoked then the last seen xid error
- * type is returned for all xid error events.
+ * On Windows, in case of Xid error, the function returns the most recent Xid
error type seen by the system.
+ * If there are multiple Xid errors generated before nvmlEventSetWait is
invoked then the last seen Xid error
+ * type is returned for all Xid error events.
*
- * On Linux, every xid error event would return the associated event data and
other information if applicable.
+ * On Linux, every Xid error event would return the associated event data and
other information if applicable.
*
* In MIG mode, if device handle is provided, the API reports all the events
for the available instances,
* only if the caller has appropriate privileges. In absence of required
privileges, only the events which
@@ -8853,11 +9156,16 @@
/**
* Query the supported vGPU placement ID of the vGPU type.
*
- * An array of supported vGPU placement IDs for the vGPU type ID indicated by
\a vgpuTypeId is returned in the
- * caller-supplied buffer of \a pPlacementList->placementIds. Memory needed
for the placementIds array should be
- * allocated based on maximum instances of a vGPU type which can be queried
via \ref nvmlVgpuTypeGetMaxInstances().
- *
- * This function will return supported placement IDs even if GPU is not in
vGPU heterogeneous mode.
+ * The function returns an array of supported vGPU placement IDs for the
specified vGPU type ID in the buffer provided
+ * by the caller at \a pPlacementList->placementIds. The required memory for
the placementIds array must be allocated
+ * based on the maximum number of vGPU type instances, which is retrievable
through \ref nvmlVgpuTypeGetMaxInstances().
+ * If the provided count by the caller is insufficient, the function will
return NVML_ERROR_INSUFFICIENT_SIZE along with
+ * the number of required entries in \a pPlacementList->count. The caller
should then reallocate a buffer with the size
+ * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke
the function again.
+ *
+ * To obtain a list of homogeneous placement IDs, the caller needs to set \a
pPlacementList->mode to NVML_VGPU_PGPU_HOMOGENEOUS_MODE.
+ * For heterogeneous placement IDs, \a pPlacementList->mode should be set to
NVML_VGPU_PGPU_HETEROGENEOUS_MODE.
+ * By default, a list of heterogeneous placement IDs is returned.
*
* @param device Identifier of the target device
* @param vgpuTypeId Handle to vGPU type. The vGPU
type ID
@@ -8870,6 +9178,7 @@
* - \ref NVML_ERROR_NOT_SUPPORTED If \a device or \a
vgpuTypeId isn't supported
* - \ref NVML_ERROR_NO_PERMISSION If user doesn't have
permission to perform the operation
* - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a
pPlacementList is invalid
+ * - \ref NVML_ERROR_INSUFFICIENT_SIZE If the buffer is
small, element count is returned in \a pPlacementList->count
* - \ref NVML_ERROR_UNKNOWN On any unexpected error
*/
nvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t
device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t *pPlacementList);
@@ -8880,11 +9189,13 @@
* An array of creatable vGPU placement IDs for the vGPU type ID indicated by
\a vgpuTypeId is returned in the
* caller-supplied buffer of \a pPlacementList->placementIds. Memory needed
for the placementIds array should be
* allocated based on maximum instances of a vGPU type which can be queried
via \ref nvmlVgpuTypeGetMaxInstances().
+ * If the provided count by the caller is insufficient, the function will
return NVML_ERROR_INSUFFICIENT_SIZE along with
+ * the number of required entries in \a pPlacementList->count. The caller
should then reallocate a buffer with the size
+ * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke
the function again.
+ *
* The creatable vGPU placement IDs may differ over time, as there may be
restrictions on what type of vGPU the
* vGPU instance is running.
*
- * The function will return \ref NVML_ERROR_NOT_SUPPORTED if the \a device is
not in vGPU heterogeneous mode.
- *
* @param device The identifier of the target
device
* @param vgpuTypeId Handle to vGPU type. The vGPU
type ID
* @param pPlacementList Pointer to the list of vGPU
placement structure \a nvmlVgpuPlacementList_t
@@ -8927,7 +9238,7 @@
nvmlReturn_t DECLDIR nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId_t vgpuTypeId,
unsigned long long *fbReservation);
/**
- * Specify the currently used runtime state size of the vGPU instance
+ * Retrieve the currently used runtime state size of the vGPU instance
*
* This size represents the maximum in-memory data size utilized by a vGPU
instance during standard operation.
* This measurement is exclusive of frame buffer (FB) data size assigned to
the vGPU instance.
@@ -10446,7 +10757,10 @@
#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1 0x7
#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_REV1 0x8
#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV2 0x9
-#define NVML_GPU_INSTANCE_PROFILE_COUNT 0xA
+#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_GFX 0xA
+#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_GFX 0xB
+#define NVML_GPU_INSTANCE_PROFILE_4_SLICE_GFX 0xC
+#define NVML_GPU_INSTANCE_PROFILE_COUNT 0xD
/**
* MIG GPU instance profile capability.
@@ -10454,7 +10768,9 @@
* Bit field values representing MIG profile capabilities
* \ref nvmlGpuInstanceProfileInfo_v3_t.capabilities
*/
-#define NVML_GPU_INTSTANCE_PROFILE_CAPS_P2P 0x1
+#define NVML_GPU_INSTANCE_PROFILE_CAPS_P2P 0x1
+#define NVML_GPU_INTSTANCE_PROFILE_CAPS_P2P 0x1 //!< Deprecated, do not use
+#define NVML_GPU_INSTANCE_PROFILE_CAPS_GFX 0x2
/**
* MIG compute instance profile capability.
@@ -10462,7 +10778,7 @@
* Bit field values representing MIG profile capabilities
* \ref nvmlComputeInstanceProfileInfo_v3_t.capabilities
*/
-/* No capabilities for compute profiles currently exposed */
+#define NVML_COMPUTE_INSTANCE_PROFILE_CAPS_GFX 0x1
typedef struct nvmlGpuInstancePlacement_st
{
@@ -11357,78 +11673,77 @@
*/
typedef enum
{
- NVML_GPM_METRIC_GRAPHICS_UTIL = 1, //!< Percentage of time
any compute/graphics app was active on the GPU. 0.0 - 100.0
- NVML_GPM_METRIC_SM_UTIL = 2, //!< Percentage of SMs
that were busy. 0.0 - 100.0
- NVML_GPM_METRIC_SM_OCCUPANCY = 3, //!< Percentage of warps
that were active vs theoretical maximum. 0.0 - 100.0
- NVML_GPM_METRIC_INTEGER_UTIL = 4, //!< Percentage of time
the GPU's SMs were doing integer operations. 0.0 - 100.0
- NVML_GPM_METRIC_ANY_TENSOR_UTIL = 5, //!< Percentage of time
the GPU's SMs were doing ANY tensor operations. 0.0 - 100.0
- NVML_GPM_METRIC_DFMA_TENSOR_UTIL = 6, //!< Percentage of time
the GPU's SMs were doing DFMA tensor operations. 0.0 - 100.0
- NVML_GPM_METRIC_HMMA_TENSOR_UTIL = 7, //!< Percentage of time
the GPU's SMs were doing HMMA tensor operations. 0.0 - 100.0
- NVML_GPM_METRIC_IMMA_TENSOR_UTIL = 9, //!< Percentage of time
the GPU's SMs were doing IMMA tensor operations. 0.0 - 100.0
- NVML_GPM_METRIC_DRAM_BW_UTIL = 10, //!< Percentage of DRAM bw
used vs theoretical maximum. 0.0 - 100.0 */
- NVML_GPM_METRIC_FP64_UTIL = 11, //!< Percentage of time
the GPU's SMs were doing non-tensor FP64 math. 0.0 - 100.0
- NVML_GPM_METRIC_FP32_UTIL = 12, //!< Percentage of time
the GPU's SMs were doing non-tensor FP32 math. 0.0 - 100.0
- NVML_GPM_METRIC_FP16_UTIL = 13, //!< Percentage of time
the GPU's SMs were doing non-tensor FP16 math. 0.0 - 100.0
- NVML_GPM_METRIC_PCIE_TX_PER_SEC = 20, //!< PCIe traffic from
this GPU in MiB/sec
- NVML_GPM_METRIC_PCIE_RX_PER_SEC = 21, //!< PCIe traffic to this
GPU in MiB/sec
- NVML_GPM_METRIC_NVDEC_0_UTIL = 30, //!< Percent utilization
of NVDEC 0. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_1_UTIL = 31, //!< Percent utilization
of NVDEC 1. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_2_UTIL = 32, //!< Percent utilization
of NVDEC 2. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_3_UTIL = 33, //!< Percent utilization
of NVDEC 3. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_4_UTIL = 34, //!< Percent utilization
of NVDEC 4. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_5_UTIL = 35, //!< Percent utilization
of NVDEC 5. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_6_UTIL = 36, //!< Percent utilization
of NVDEC 6. 0.0 - 100.0
- NVML_GPM_METRIC_NVDEC_7_UTIL = 37, //!< Percent utilization
of NVDEC 7. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_0_UTIL = 40, //!< Percent utilization
of NVJPG 0. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_1_UTIL = 41, //!< Percent utilization
of NVJPG 1. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_2_UTIL = 42, //!< Percent utilization
of NVJPG 2. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_3_UTIL = 43, //!< Percent utilization
of NVJPG 3. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_4_UTIL = 44, //!< Percent utilization
of NVJPG 4. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_5_UTIL = 45, //!< Percent utilization
of NVJPG 5. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_6_UTIL = 46, //!< Percent utilization
of NVJPG 6. 0.0 - 100.0
- NVML_GPM_METRIC_NVJPG_7_UTIL = 47, //!< Percent utilization
of NVJPG 7. 0.0 - 100.0
- NVML_GPM_METRIC_NVOFA_0_UTIL = 50, //!< Percent utilization
of NVOFA 0. 0.0 - 100.0
- NVML_GPM_METRIC_NVOFA_1_UTIL = 51, //!< Percent utilization
of NVOFA 1. 0.0 - 100.0
- NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC = 60, //!< NvLink read bandwidth
for all links in MiB/sec
- NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC = 61, //!< NvLink write
bandwidth for all links in MiB/sec
- NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC = 62, //!< NvLink read bandwidth
for link 0 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC = 63, //!< NvLink write
bandwidth for link 0 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC = 64, //!< NvLink read bandwidth
for link 1 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC = 65, //!< NvLink write
bandwidth for link 1 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC = 66, //!< NvLink read bandwidth
for link 2 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC = 67, //!< NvLink write
bandwidth for link 2 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC = 68, //!< NvLink read bandwidth
for link 3 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC = 69, //!< NvLink write
bandwidth for link 3 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC = 70, //!< NvLink read bandwidth
for link 4 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC = 71, //!< NvLink write
bandwidth for link 4 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC = 72, //!< NvLink read bandwidth
for link 5 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC = 73, //!< NvLink write
bandwidth for link 5 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC = 74, //!< NvLink read bandwidth
for link 6 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC = 75, //!< NvLink write
bandwidth for link 6 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC = 76, //!< NvLink read bandwidth
for link 7 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC = 77, //!< NvLink write
bandwidth for link 7 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC = 78, //!< NvLink read bandwidth
for link 8 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC = 79, //!< NvLink write
bandwidth for link 8 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC = 80, //!< NvLink read bandwidth
for link 9 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC = 81, //!< NvLink write
bandwidth for link 9 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC = 82, //!< NvLink read bandwidth
for link 10 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC = 83, //!< NvLink write
bandwidth for link 10 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC = 84, //!< NvLink read bandwidth
for link 11 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC = 85, //!< NvLink write
bandwidth for link 11 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC = 86, //!< NvLink read bandwidth
for link 12 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC = 87, //!< NvLink write
bandwidth for link 12 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC = 88, //!< NvLink read bandwidth
for link 13 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC = 89, //!< NvLink write
bandwidth for link 13 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC = 90, //!< NvLink read bandwidth
for link 14 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC = 91, //!< NvLink write
bandwidth for link 14 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC = 92, //!< NvLink read bandwidth
for link 15 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC = 93, //!< NvLink write
bandwidth for link 15 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC = 94, //!< NvLink read bandwidth
for link 16 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC = 95, //!< NvLink write
bandwidth for link 16 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC = 96, //!< NvLink read bandwidth
for link 17 in MiB/sec
- NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC = 97, //!< NvLink write
bandwidth for link 17 in MiB/sec
- //Put new metrics for BLACKWELL here...
- NVML_GPM_METRIC_MAX = 98, //!< Maximum value above
+1. Note that changing this should also change NVML_GPM_METRICS_GET_VERSION due
to struct size change
+ NVML_GPM_METRIC_GRAPHICS_UTIL = 1, //!< Percentage of
time any compute/graphics app was active on the GPU. 0.0 - 100.0
+ NVML_GPM_METRIC_SM_UTIL = 2, //!< Percentage of SMs
that were busy. 0.0 - 100.0
+ NVML_GPM_METRIC_SM_OCCUPANCY = 3, //!< Percentage of
warps that were active vs theoretical maximum. 0.0 - 100.0
+ NVML_GPM_METRIC_INTEGER_UTIL = 4, //!< Percentage of
time the GPU's SMs were doing integer operations. 0.0 - 100.0
+ NVML_GPM_METRIC_ANY_TENSOR_UTIL = 5, //!< Percentage of
time the GPU's SMs were doing ANY tensor operations. 0.0 - 100.0
+ NVML_GPM_METRIC_DFMA_TENSOR_UTIL = 6, //!< Percentage of
time the GPU's SMs were doing DFMA tensor operations. 0.0 - 100.0
+ NVML_GPM_METRIC_HMMA_TENSOR_UTIL = 7, //!< Percentage of
time the GPU's SMs were doing HMMA tensor operations. 0.0 - 100.0
+ NVML_GPM_METRIC_IMMA_TENSOR_UTIL = 9, //!< Percentage of
time the GPU's SMs were doing IMMA tensor operations. 0.0 - 100.0
+ NVML_GPM_METRIC_DRAM_BW_UTIL = 10, //!< Percentage of
DRAM bw used vs theoretical maximum. 0.0 - 100.0 */
+ NVML_GPM_METRIC_FP64_UTIL = 11, //!< Percentage of
time the GPU's SMs were doing non-tensor FP64 math. 0.0 - 100.0
+ NVML_GPM_METRIC_FP32_UTIL = 12, //!< Percentage of
time the GPU's SMs were doing non-tensor FP32 math. 0.0 - 100.0
+ NVML_GPM_METRIC_FP16_UTIL = 13, //!< Percentage of
time the GPU's SMs were doing non-tensor FP16 math. 0.0 - 100.0
+ NVML_GPM_METRIC_PCIE_TX_PER_SEC = 20, //!< PCIe traffic from
this GPU in MiB/sec
+ NVML_GPM_METRIC_PCIE_RX_PER_SEC = 21, //!< PCIe traffic to
this GPU in MiB/sec
+ NVML_GPM_METRIC_NVDEC_0_UTIL = 30, //!< Percent
utilization of NVDEC 0. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_1_UTIL = 31, //!< Percent
utilization of NVDEC 1. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_2_UTIL = 32, //!< Percent
utilization of NVDEC 2. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_3_UTIL = 33, //!< Percent
utilization of NVDEC 3. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_4_UTIL = 34, //!< Percent
utilization of NVDEC 4. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_5_UTIL = 35, //!< Percent
utilization of NVDEC 5. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_6_UTIL = 36, //!< Percent
utilization of NVDEC 6. 0.0 - 100.0
+ NVML_GPM_METRIC_NVDEC_7_UTIL = 37, //!< Percent
utilization of NVDEC 7. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_0_UTIL = 40, //!< Percent
utilization of NVJPG 0. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_1_UTIL = 41, //!< Percent
utilization of NVJPG 1. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_2_UTIL = 42, //!< Percent
utilization of NVJPG 2. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_3_UTIL = 43, //!< Percent
utilization of NVJPG 3. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_4_UTIL = 44, //!< Percent
utilization of NVJPG 4. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_5_UTIL = 45, //!< Percent
utilization of NVJPG 5. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_6_UTIL = 46, //!< Percent
utilization of NVJPG 6. 0.0 - 100.0
+ NVML_GPM_METRIC_NVJPG_7_UTIL = 47, //!< Percent
utilization of NVJPG 7. 0.0 - 100.0
+ NVML_GPM_METRIC_NVOFA_0_UTIL = 50, //!< Percent
utilization of NVOFA 0. 0.0 - 100.0
+ NVML_GPM_METRIC_NVOFA_1_UTIL = 51, //!< Percent
utilization of NVOFA 1. 0.0 - 100.0
+ NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC = 60, //!< NvLink read
bandwidth for all links in MiB/sec
+ NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC = 61, //!< NvLink write
bandwidth for all links in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC = 62, //!< NvLink read
bandwidth for link 0 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC = 63, //!< NvLink write
bandwidth for link 0 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC = 64, //!< NvLink read
bandwidth for link 1 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC = 65, //!< NvLink write
bandwidth for link 1 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC = 66, //!< NvLink read
bandwidth for link 2 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC = 67, //!< NvLink write
bandwidth for link 2 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC = 68, //!< NvLink read
bandwidth for link 3 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC = 69, //!< NvLink write
bandwidth for link 3 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC = 70, //!< NvLink read
bandwidth for link 4 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC = 71, //!< NvLink write
bandwidth for link 4 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC = 72, //!< NvLink read
bandwidth for link 5 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC = 73, //!< NvLink write
bandwidth for link 5 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC = 74, //!< NvLink read
bandwidth for link 6 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC = 75, //!< NvLink write
bandwidth for link 6 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC = 76, //!< NvLink read
bandwidth for link 7 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC = 77, //!< NvLink write
bandwidth for link 7 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC = 78, //!< NvLink read
bandwidth for link 8 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC = 79, //!< NvLink write
bandwidth for link 8 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC = 80, //!< NvLink read
bandwidth for link 9 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC = 81, //!< NvLink write
bandwidth for link 9 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC = 82, //!< NvLink read
bandwidth for link 10 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC = 83, //!< NvLink write
bandwidth for link 10 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC = 84, //!< NvLink read
bandwidth for link 11 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC = 85, //!< NvLink write
bandwidth for link 11 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC = 86, //!< NvLink read
bandwidth for link 12 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC = 87, //!< NvLink write
bandwidth for link 12 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC = 88, //!< NvLink read
bandwidth for link 13 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC = 89, //!< NvLink write
bandwidth for link 13 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC = 90, //!< NvLink read
bandwidth for link 14 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC = 91, //!< NvLink write
bandwidth for link 14 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC = 92, //!< NvLink read
bandwidth for link 15 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC = 93, //!< NvLink write
bandwidth for link 15 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC = 94, //!< NvLink read
bandwidth for link 16 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC = 95, //!< NvLink write
bandwidth for link 16 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC = 96, //!< NvLink read
bandwidth for link 17 in MiB/sec
+ NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC = 97, //!< NvLink write
bandwidth for link 17 in MiB/sec
+ NVML_GPM_METRIC_MAX = 98, //!< Maximum value
above +1. Note that changing this should also change
NVML_GPM_METRICS_GET_VERSION due to struct size change
} nvmlGpmMetricId_t;
/** @} */ // @defgroup nvmlGpmEnums
@@ -11624,28 +11939,6 @@
/** @} */ // @defgroup nvmlGpmFunctions
/** @} */ // @defgroup GPM
-/***************************************************************************************************/
-/** @defgroup NVML NVLink
- * @{
- */
-/***************************************************************************************************/
-
-#define NVML_NVLINK_SYMBOL_BER_MANTISSA_SHIFT 8
-#define NVML_NVLINK_SYMBOL_BER_MANTISSA_WIDTH 0xf
-
-#define NVML_NVLINK_SYMBOL_BER_EXP_SHIFT 0
-#define NVML_NVLINK_SYMBOL_BER_EXP_WIDTH 0xff
-
-/**
- * Nvlink Error counter BER can be obtained using the below macros
- * Ex - NVML_NVLINK_ERROR_COUNTER_BER_GET(var, SYMBOL_BER_MANTISSA)
- */
-#define NVML_NVLINK_ERROR_COUNTER_BER_GET(var, type) \
- (((var) >> NVML_NVLINK_##type##_SHIFT) & \
- (NVML_NVLINK_##type##_WIDTH)) \
-
-/** @} */ // @defgroup NVML NVLink
-
#define NVML_DEV_CAP_EGM (1 << 0) // Extended GPU memory
/**
* Device capabilities
@@ -11700,6 +11993,282 @@
unsigned int mask[NVML_255_MASK_NUM_ELEMS]; //<! Array to hold 255
bits
} nvmlMask255_t;
+/***************************************************************************************************/
+/** @defgroup nvmlPowerProfiles Power Profile Information
+ * @{
+ */
+/***************************************************************************************************/
+#define NVML_WORKLOAD_POWER_MAX_PROFILES (255)
+typedef enum
+{
+ NVML_POWER_PROFILE_MAX_P = 0,
+ NVML_POWER_PROFILE_MAX_Q = 1,
+ NVML_POWER_PROFILE_COMPUTE = 2,
+ NVML_POWER_PROFILE_MEMORY_BOUND = 3,
+ NVML_POWER_PROFILE_NETWORK = 4,
+ NVML_POWER_PROFILE_BALANCED = 5,
+ NVML_POWER_PROFILE_LLM_INFERENCE = 6,
+ NVML_POWER_PROFILE_LLM_TRAINING = 7,
+ NVML_POWER_PROFILE_RBM = 8,
+ NVML_POWER_PROFILE_DCPCIE = 9,
+ NVML_POWER_PROFILE_HMMA_SPARSE = 10,
+ NVML_POWER_PROFILE_HMMA_DENSE = 11,
+ NVML_POWER_PROFILE_SYNC_BALANCED = 12,
+ NVML_POWER_PROFILE_HPC = 13,
+ NVML_POWER_PROFILE_MIG = 14,
+
+ NVML_POWER_PROFILE_MAX = 15,
+} nvmlPowerProfileType_t;
+
+/**
+ * Profile Metadata
+ */
+typedef struct
+{
+ unsigned int version; //!< the API version number
+ unsigned int profileId; //<! Performance Profile Id to provide
semantic name such as compute, Memory, Max-Q...
+ unsigned int priority; //<! Priority of the profile
+ nvmlMask255_t conflictingMask; //<! Mask of conflicting performance
profiles
+} nvmlWorkloadPowerProfileInfo_v1_t;
+typedef nvmlWorkloadPowerProfileInfo_v1_t nvmlWorkloadPowerProfileInfo_t;
+#define nvmlWorkloadPowerProfileInfo_v1
NVML_STRUCT_VERSION(WorkloadPowerProfileInfo, 1)
+
+/**
+ * Profiles Info
+ */
+typedef struct
+{
+ unsigned int version;
//!< the API version number
+ nvmlMask255_t perfProfilesMask;
//!< Mask bit set to true for each valid performance profile
+ nvmlWorkloadPowerProfileInfo_t
perfProfile[NVML_WORKLOAD_POWER_MAX_PROFILES]; //!< Array of performance
profile info parameters
+} nvmlWorkloadPowerProfileProfilesInfo_v1_t;
+typedef nvmlWorkloadPowerProfileProfilesInfo_v1_t
nvmlWorkloadPowerProfileProfilesInfo_t;
+#define nvmlWorkloadPowerProfileProfilesInfo_v1
NVML_STRUCT_VERSION(WorkloadPowerProfileProfilesInfo, 1)
+
+/**
+ * Current Profiles
+ */
+typedef struct
+{
+ unsigned int version;
+ nvmlMask255_t perfProfilesMask; //!< Mask bit set to true
for each valid performance profile
+ nvmlMask255_t requestedProfilesMask; //!< Mask of currently
requested performance profiles
+ nvmlMask255_t enforcedProfilesMask; //!< Mask of currently
enforced performance profiles post all arbitrations among the requested
profiles.
+} nvmlWorkloadPowerProfileCurrentProfiles_v1_t;
+typedef nvmlWorkloadPowerProfileCurrentProfiles_v1_t
nvmlWorkloadPowerProfileCurrentProfiles_t;
+#define nvmlWorkloadPowerProfileCurrentProfiles_v1
NVML_STRUCT_VERSION(WorkloadPowerProfileCurrentProfiles, 1)
+
+/**
+ * Requested Profiles
+ */
+typedef struct
+{
+ unsigned int version; //!< the API version number
+ nvmlMask255_t requestedProfilesMask; //!< Mask of 255 bits, each bit
representing index of respective perf profile
+} nvmlWorkloadPowerProfileRequestedProfiles_v1_t;
+typedef nvmlWorkloadPowerProfileRequestedProfiles_v1_t
nvmlWorkloadPowerProfileRequestedProfiles_t;
+#define nvmlWorkloadPowerProfileRequestedProfiles_v1
NVML_STRUCT_VERSION(WorkloadPowerProfileRequestedProfiles, 1)
+
+/**
+ * Get Performance Profiles Information
+ *
+ * %BLACKWELL_OR_NEWER%
+ * See \ref nvmlWorkloadPowerProfileProfilesInfo_v1_t for more information on
the struct.
+ * The mask \a perfProfilesMask is bitmask of all supported mode indices where
the
+ * mode is supported if the index is 1. Each supported mode will have a
corresponding
+ * entry in the \a perfProfile array which will contain the \a profileId, the
+ * \a priority of this mode, where the lower the value, the higher the
priority,
+ * and a \a conflictingMask, where each bit set in the mask corresponds to a
different
+ * profile which cannot be used in conjunction with the given profile.
+ *
+ * @param device The identifier of the target
device
+ * @param profilesInfo Reference to struct \a
nvmlWorkloadPowerProfileProfilesInfo_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS If the query is
successful
+ * - \ref NVML_ERROR_INSUFFICIENT_SIZE If struct is fully
allocated
+ * - \ref NVML_ERROR_UNINITIALIZED If the library has not
been successfully initialized
+ * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid
or \a pointer to struct is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not
support this feature
+ * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version
is invalid/unsupported
+ * - \ref NVML_ERROR_UNKNOWN On any unexpected error
+ */
+nvmlReturn_t DECLDIR
nvmlDeviceWorkloadPowerProfileGetProfilesInfo(nvmlDevice_t device,
+
nvmlWorkloadPowerProfileProfilesInfo_t *profilesInfo);
+/**
+ * Get Current Performance Profiles
+ *
+ * %BLACKWELL_OR_NEWER%
+ * See \ref nvmlWorkloadPowerProfileCurrentProfiles_v1_t for more information
on the struct.
+ * This API returns a stuct which contains the current \a perfProfilesMask,
+ * \a requestedProfilesMask and \a enforcedProfilesMask. Each bit set in each
+ * bitmasks indicates the profile is supported, currently requested or
currently
+ * engaged, respectively.
+ *
+ * @param device The identifier of the target device
+ * @param currentProfiles Reference to struct \a
nvmlWorkloadPowerProfileCurrentProfiles_v1_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS If the query is
successful
+ * - \ref NVML_ERROR_UNINITIALIZED If the library has not
been successfully initialized
+ * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid
or the pointer to struct is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not
support this feature
+ * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version
is invalid/unsupported
+ * - \ref NVML_ERROR_UNKNOWN On any unexpected error
+ */
+nvmlReturn_t DECLDIR
nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(nvmlDevice_t device,
+
nvmlWorkloadPowerProfileCurrentProfiles_t *currentProfiles);
+/**
+ * Set Requested Performance Profiles
+ *
+ * %BLACKWELL_OR_NEWER%
+ * See \ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more
information on the struct.
+ * Reuqest one or more performance profiles be activated using the input
bitmask
+ * \a requestedProfilesMask, where each bit set corresponds to a supported bit
from
+ * the \a perfProfilesMask. These profiles will be added to existing list of
+ * currently requested profiles.
+ *
+ * @param device The identifier of the target device
+ * @param requestedProfiles Reference to struct \a
nvmlWorkloadPowerProfileRequestedProfiles_v1_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS If the query is
successful
+ * - \ref NVML_ERROR_UNINITIALIZED If the library has not
been successfully initialized
+ * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid
or \a pointer to struct is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not
support this feature
+ * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version
is invalid/unsupported
+ * - \ref NVML_ERROR_UNKNOWN On any unexpected error
+ */
+nvmlReturn_t DECLDIR
nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(nvmlDevice_t device,
+
nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles);
+/**
+ * Clear Requested Performance Profiles
+ *
+ * %BLACKWELL_OR_NEWER%
+ * See \ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more
information on the struct.
+ * Clear one or more performance profiles be using the input bitmask
+ * \a requestedProfilesMask, where each bit set corresponds to a supported bit
from
+ * the \a perfProfilesMask. These profiles will be removed from the existing
list of
+ * currently requested profiles.
+ *
+ * @param device The identifier of the target device
+ * @param requestedProfiles Reference to struct \a
nvmlWorkloadPowerProfileRequestedProfiles_v1_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS If the query is
successful
+ * - \ref NVML_ERROR_UNINITIALIZED If the library has not
been successfully initialized
+ * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid
or \a pointer to struct is NULL
+ * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not
support this feature
+ * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has
fallen off the bus or is otherwise inaccessible
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version
is invalid/unsupported
+ * - \ref NVML_ERROR_UNKNOWN On any unexpected error
+ */
+nvmlReturn_t DECLDIR
nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(nvmlDevice_t device,
+
nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles);
+/** @} */ // @defgroup
+
+/***************************************************************************************************/
+/** @defgroup nvmlPowerSmoothing Power Smoothing Information
+ * @{
+ */
+/***************************************************************************************************/
+#define NVML_POWER_SMOOTHING_IDX_FROM_FIELD_VAL(field_val) \
+ (field_val - NVML_FI_PWR_SMOOTHING_ENABLED)
+
+#define NVML_POWER_SMOOTHING_MAX_NUM_PROFILES 5
+#define NVML_POWER_SMOOTHING_NUM_PROFILE_PARAMS 4
+#define NVML_POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET 0xFFFFFFFFU
+#define NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR 0
+#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE 1
+#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE 2
+#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS 3
+
+/*
+ * Power Smoothing Structure for Profile information
+ */
+typedef struct
+{
+ unsigned int version; //!< the API version number
+
+ unsigned int profileId; //!< The requested profile ID
+ unsigned int paramId; //!< The requested paramater ID
+ double value; //!< The requested value for the given parameter
+} nvmlPowerSmoothingProfile_v1_t;
+typedef nvmlPowerSmoothingProfile_v1_t nvmlPowerSmoothingProfile_t; //!<
Current version for the power smoothing profile structure
+#define nvmlPowerSmoothingProfile_v1
NVML_STRUCT_VERSION(PowerSmoothingProfile, 1)
+
+/*
+ * Power Smoothing Structure for Feature Enablement
+ */
+typedef struct
+{
+ unsigned int version; //!< the API version number
+ nvmlEnableState_t state; //!< 0/Disabled or 1/Enabled
+} nvmlPowerSmoothingState_v1_t;
+typedef nvmlPowerSmoothingState_v1_t nvmlPowerSmoothingState_t; //!< Current
version for the power smoothing state structure
+#define nvmlPowerSmoothingState_v1 NVML_STRUCT_VERSION(PowerSmoothingState, 1)
+
+/**
+ * Activiate a specific preset profile for datacenter power smoothing
+ * The API only sets the active preset profile based on the input profileId,
+ * and ignores the other parameters of the structure.
+ *
+ * @param device The identifier of the target
device
+ * @param profile Reference to \ref
nvmlPowerSmoothingProfile_t.
+ * Note that only \a
profile->profileId is used and
+ * the rest of the structure is
ignored.
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the Desired Profile was
successfully set
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
structure was NULL
+ * - \ref NVML_ERROR_NO_PERMISSION if user does not have
permission to change the profile number
+ * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not
supported by the device
+ *
+ **/
+nvmlReturn_t DECLDIR
nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice_t device,
+
nvmlPowerSmoothingProfile_t *profile);
+
+/**
+ * Update the value of a specific profile parameter contained within \ref
nvmlPowerSmoothingProfile_t
+ *
+ * NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR expects a value as a
percentage from 00.00-100.00%
+ * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE expects a value in W/s
+ * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE expects a value in W/s
+ * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS expects a value in
ms
+ *
+ * @param device The identifier of the
target device
+ * @param profile Reference to \ref
nvmlPowerSmoothingProfile_t struct
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the Active Profile
was successfully set
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
profile parameter/value was invalid
+ * - \ref NVML_ERROR_NO_PERMISSION if user does not have
permission to change any profile parameters
+ * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the structure version
is not supported
+ *
+ **/
+nvmlReturn_t DECLDIR
nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice_t device,
+
nvmlPowerSmoothingProfile_t *profile);
+/**
+ * Enable or disable the Power Smoothing Feature
+ * See \ref nvmlEnableState_t for details on allowed states
+ *
+ * @param device The identifier of the
target device
+ * @param state Reference to \ref
nvmlPowerSmoothingState_t
+ *
+ * @return
+ * - \ref NVML_SUCCESS if the feature state was
successfully set
+ * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or
state is NULL
+ * - \ref NVML_ERROR_NO_PERMISSION if user does not have
permission to change feature state
+ * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not
supported by the device
+ *
+ **/
+nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingSetState(nvmlDevice_t device,
+
nvmlPowerSmoothingState_t *state);
+/** @} */ // @defgroup
+
/**
* NVML API versioning support
*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/src/version.mk
new/nvidia-settings-570.86.16/src/version.mk
--- old/nvidia-settings-565.77/src/version.mk 2024-11-28 01:00:40.000000000
+0100
+++ new/nvidia-settings-570.86.16/src/version.mk 2025-01-24
23:03:57.000000000 +0100
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 565.77
+NVIDIA_VERSION = 570.86.16
# This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/utils.mk
new/nvidia-settings-570.86.16/utils.mk
--- old/nvidia-settings-565.77/utils.mk 2024-11-28 01:00:40.000000000 +0100
+++ new/nvidia-settings-570.86.16/utils.mk 2025-01-24 23:03:57.000000000
+0100
@@ -541,6 +541,8 @@
ifeq ($(DEBUG),1)
NVIDSTRING_BUILD_TYPE_STRING = Debug Build
+else ifeq ($(DEVELOP),1)
+ NVIDSTRING_BUILD_TYPE_STRING = Develop Build
else
NVIDSTRING_BUILD_TYPE_STRING = Release Build
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nvidia-settings-565.77/version.mk
new/nvidia-settings-570.86.16/version.mk
--- old/nvidia-settings-565.77/version.mk 2024-11-28 01:00:40.000000000
+0100
+++ new/nvidia-settings-570.86.16/version.mk 2025-01-24 23:03:57.000000000
+0100
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 565.77
+NVIDIA_VERSION = 570.86.16
# This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))