NVML API 参考指南 (PDF) - vR570 (更旧版本) - 最后更新于 2025 年 1 月 29 日 - 发送反馈

4.2. 设备枚举

struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 

定义

#define MAX_CLK_DOMAINS 32
#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED 0x00000000
#define NVML_BUS_TYPE_UNKNOWN 0
#define NVML_DEVICE_ARCH_KEPLER 2
#define NVML_DOUBLE_BIT_ECC
#define NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SW 0
#define NVML_GSP_FIRMWARE_VERSION_BUF_SIZE 0x40
#define NVML_PCIE_LINK_MAX_SPEED_INVALID 0x00000000
#define NVML_POWER_SCOPE_GPU 0U
仅目标 GPU。
#define NVML_POWER_SCOPE_MEMORY 2U
目标 GPU 内存。
#define NVML_POWER_SCOPE_MODULE 1U
目标整个模块。
#define NVML_POWER_SOURCE_AC 0x00000000
#define NVML_SINGLE_BIT_ECC
#define nvmlEccBitType_t nvmlMemoryErrorType_t
#define nvmlFlagDefault 0x00
用于指定某些函数默认行为的通用标志。 有关详细信息,请参阅特定函数的描述。
#define nvmlFlagForce 0x01
用于强制某些行为的通用标志。 有关详细信息,请参阅特定函数的描述。

枚举

enum nvmlBrandType_t
enum nvmlClockId_t
enum nvmlClockType_t
enum nvmlComputeMode_t
enum nvmlDriverModel_t
enum nvmlEccCounterType_t
enum nvmlEnableState_t
enum nvmlGpuOperationMode_t
enum nvmlGpuUtilizationDomainId_t
enum nvmlInforomObject_t
enum nvmlMemoryErrorType_t
enum nvmlMemoryLocation_t
enum nvmlNvlinkVersion_t
enum nvmlPageRetirementCause_t
enum nvmlPstates_t
enum nvmlRestrictedAPI_t
enum nvmlReturn_t
enum nvmlTemperatureSensors_t
enum nvmlTemperatureThresholds_t

定义

#define MAX_CLK_DOMAINS 32

最大时钟监视器可用数量

#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED 0x00000000

自适应时钟状态

#define NVML_BUS_TYPE_UNKNOWN 0

PCI 总线类型

#define NVML_DEVICE_ARCH_KEPLER 2

简化的芯片架构

#define NVML_DOUBLE_BIT_ECC
已弃用

映射到 NVML_MEMORY_ERROR_TYPE_UNCORRECTED

双位 ECC 错误

NVML_MEMORY_ERROR_TYPE_UNCORRECTED

#define NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SW 0

设备电源模式 设备风扇控制策略

#define NVML_GSP_FIRMWARE_VERSION_BUF_SIZE 0x40

GSP 固件

#define NVML_PCIE_LINK_MAX_SPEED_INVALID 0x00000000

设备 PCIE 链路最大速度

#define NVML_POWER_SCOPE_GPU 0U

设备范围 - 这对于检索 GPU 和模块(例如 GPU + CPU)级别的遥测数据非常有用

#define NVML_POWER_SCOPE_MEMORY 2U

#define NVML_POWER_SCOPE_MODULE 1U

#define NVML_POWER_SOURCE_AC 0x00000000

设备电源

#define NVML_SINGLE_BIT_ECC
已弃用

映射到 NVML_MEMORY_ERROR_TYPE_CORRECTED

单位 ECC 错误

NVML_MEMORY_ERROR_TYPE_CORRECTED

#define nvmlEccBitType_t nvmlMemoryErrorType_t
已弃用

有关更灵活的类型,请参阅 nvmlMemoryErrorType_t

ECC 位类型。

#define nvmlFlagDefault 0x00

#define nvmlFlagForce 0x01

枚举

enum nvmlBrandType_t

* GPU 的品牌

NVML_BRAND_UNKNOWN = 0
NVML_BRAND_QUADRO = 1
NVML_BRAND_TESLA = 2
NVML_BRAND_NVS = 3
NVML_BRAND_GRID = 4
NVML_BRAND_GEFORCE = 5
NVML_BRAND_TITAN = 6
NVML_BRAND_NVIDIA_VAPPS = 7
NVML_BRAND_NVIDIA_VPC = 8
NVML_BRAND_NVIDIA_VCS = 9
NVML_BRAND_NVIDIA_VWS = 10
NVML_BRAND_NVIDIA_CLOUD_GAMING = 11
NVML_BRAND_NVIDIA_VGAMING = NVML_BRAND_NVIDIA_CLOUD_GAMING
NVML_BRAND_QUADRO_RTX = 12
NVML_BRAND_NVIDIA_RTX = 13
NVML_BRAND_NVIDIA = 14
NVML_BRAND_GEFORCE_RTX = 15
NVML_BRAND_TITAN_RTX = 16
NVML_BRAND_COUNT
enum nvmlClockId_t

时钟 ID。 这些与 nvmlClockType_t 结合使用以指定单个时钟值。

NVML_CLOCK_ID_CURRENT = 0
当前实际时钟值。
NVML_CLOCK_ID_APP_CLOCK_TARGET = 1
目标应用程序时钟。
NVML_CLOCK_ID_APP_CLOCK_DEFAULT = 2
默认应用程序时钟目标。
NVML_CLOCK_ID_CUSTOMER_BOOST_MAX = 3
OEM 定义的最大时钟频率。
NVML_CLOCK_ID_COUNT
时钟 ID 的计数。
enum nvmlClockType_t

时钟类型。

所有速度单位均为 Mhz。

NVML_CLOCK_GRAPHICS = 0
图形时钟域。
NVML_CLOCK_SM = 1
SM 时钟域。
NVML_CLOCK_MEM = 2
内存时钟域。
NVML_CLOCK_VIDEO = 3
视频编码器/解码器时钟域。
NVML_CLOCK_COUNT
时钟类型的计数。
enum nvmlComputeMode_t

计算模式。

NVML_COMPUTEMODE_EXCLUSIVE_PROCESS 在 CUDA 4.0 中添加。 早期 CUDA 版本支持单一独占模式,该模式等效于 CUDA 4.0 及更高版本中的 NVML_COMPUTEMODE_EXCLUSIVE_THREAD。

NVML_COMPUTEMODE_DEFAULT = 0
默认计算模式 -- 每个设备多个上下文。
NVML_COMPUTEMODE_EXCLUSIVE_THREAD = 1
支持已移除。
NVML_COMPUTEMODE_PROHIBITED = 2
计算禁止模式 -- 每个设备无上下文。
NVML_COMPUTEMODE_EXCLUSIVE_PROCESS = 3
计算独占进程模式 -- 每个设备仅一个上下文,可同时从多个线程使用。
NVML_COMPUTEMODE_COUNT
enum nvmlDriverModel_t

驱动程序模型。

仅限 Windows。

NVML_DRIVER_WDDM = 0
WDDM 驱动程序模型 -- GPU 被视为显示设备。
NVML_DRIVER_WDM = 1
WDM (TCC) 模型(已弃用)-- GPU 被视为通用计算设备。
NVML_DRIVER_MCDM = 2
MCDM 驱动程序模型 -- GPU 被视为 Microsoft 计算设备。
enum nvmlEccCounterType_t

ECC 计数器类型。

注意:易失性计数在每次驱动程序加载时重置。 在 Windows 上,这在每次启动时发生一次。 在 Linux 上,这可能更频繁。 在 Linux 上,当没有活动的客户端存在时,驱动程序会卸载。 如果持久模式已启用或始终有驱动程序客户端处于活动状态(例如 X11),则 Linux 也看到每次启动行为。 否则,易失性计数在每次运行计算应用程序时重置。

NVML_VOLATILE_ECC = 0
易失性计数在每次驱动程序加载时重置。
NVML_AGGREGATE_ECC = 1
聚合计数在重新启动后仍然存在(即,在设备的生命周期内)。
NVML_ECC_COUNTER_TYPE_COUNT
内存计数器类型的计数。
enum nvmlEnableState_t

通用启用/禁用枚举。

NVML_FEATURE_DISABLED = 0
功能已禁用。
NVML_FEATURE_ENABLED = 1
功能已启用。
enum nvmlGpuOperationMode_t

GPU 操作模式

GOM 允许通过禁用 GPU 功能来降低功耗并优化 GPU 吞吐量。

每个 GOM 都旨在满足特定用户需求。

NVML_GOM_ALL_ON = 0
所有功能均已启用并以全速运行。
NVML_GOM_COMPUTE = 1
专为仅运行计算任务而设计。 不允许图形操作
NVML_GOM_LOW_DP = 2
专为运行不需要高带宽双精度图形应用程序而设计
enum nvmlGpuUtilizationDomainId_t

表示 GPU 利用率域

NVML_GPU_UTILIZATION_DOMAIN_GPU = 0
图形引擎域。
NVML_GPU_UTILIZATION_DOMAIN_FB = 1
帧缓冲区域。
NVML_GPU_UTILIZATION_DOMAIN_VID = 2
视频引擎域。
NVML_GPU_UTILIZATION_DOMAIN_BUS = 3
总线接口域。
enum nvmlInforomObject_t

可用的 infoROM 对象。

NVML_INFOROM_OEM = 0
OEM 定义的对象。
NVML_INFOROM_ECC = 1
确定 ECC 支持级别的 ECC 对象。
NVML_INFOROM_POWER = 2
电源管理对象。
NVML_INFOROM_DEN = 3
DRAM 加密对象。
NVML_INFOROM_COUNT
这计算驱动程序知道的 infoROM 对象的数量。
enum nvmlMemoryErrorType_t

内存错误类型

NVML_MEMORY_ERROR_TYPE_CORRECTED = 0
已纠正的内存错误 对于 ECC 错误,这些是单位错误 对于纹理内存,这些是通过重新发送修复的错误
NVML_MEMORY_ERROR_TYPE_UNCORRECTED = 1
未纠正的内存错误 对于 ECC 错误,这些是双位错误 对于纹理内存,这些是重新发送失败的错误
NVML_MEMORY_ERROR_TYPE_COUNT
内存错误类型的计数。
enum nvmlMemoryLocation_t
NVML_MEMORY_LOCATION_L1_CACHE = 0
GPU L1 缓存。
NVML_MEMORY_LOCATION_L2_CACHE = 1
GPU L2 缓存。
NVML_MEMORY_LOCATION_DRAM = 2
图灵+ DRAM。
NVML_MEMORY_LOCATION_DEVICE_MEMORY = 2
GPU 设备内存。
NVML_MEMORY_LOCATION_REGISTER_FILE = 3
GPU 寄存器文件。
NVML_MEMORY_LOCATION_TEXTURE_MEMORY = 4
GPU 纹理内存。
NVML_MEMORY_LOCATION_TEXTURE_SHM = 5
共享内存。
NVML_MEMORY_LOCATION_CBU = 6
CBU。
NVML_MEMORY_LOCATION_SRAM = 7
图灵+ SRAM。
NVML_MEMORY_LOCATION_COUNT
这计算驱动程序知道的内存位置的数量。
enum nvmlNvlinkVersion_t

表示 Nvlink 版本

NVML_NVLINK_VERSION_INVALID = 0
NVML_NVLINK_VERSION_1_0 = 1
NVML_NVLINK_VERSION_2_0 = 2
NVML_NVLINK_VERSION_2_2 = 3
NVML_NVLINK_VERSION_3_0 = 4
NVML_NVLINK_VERSION_3_1 = 5
NVML_NVLINK_VERSION_4_0 = 6
NVML_NVLINK_VERSION_5_0 = 7
enum nvmlPageRetirementCause_t

页面停用原因

NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0
页面因多个单位 ECC 错误而停用。
NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1
页面因双位 ECC 错误而停用。
NVML_PAGE_RETIREMENT_CAUSE_COUNT
enum nvmlPstates_t

允许的 P 状态。

NVML_PSTATE_0 = 0
性能状态 0 -- 最大性能。
NVML_PSTATE_1 = 1
性能状态 1。
NVML_PSTATE_2 = 2
性能状态 2。
NVML_PSTATE_3 = 3
性能状态 3。
NVML_PSTATE_4 = 4
性能状态 4。
NVML_PSTATE_5 = 5
性能状态 5。
NVML_PSTATE_6 = 6
性能状态 6。
NVML_PSTATE_7 = 7
性能状态 7。
NVML_PSTATE_8 = 8
性能状态 8。
NVML_PSTATE_9 = 9
性能状态 9。
NVML_PSTATE_10 = 10
性能状态 10。
NVML_PSTATE_11 = 11
性能状态 11。
NVML_PSTATE_12 = 12
性能状态 12。
NVML_PSTATE_13 = 13
性能状态 13。
NVML_PSTATE_14 = 14
性能状态 14。
NVML_PSTATE_15 = 15
性能状态 15 -- 最小性能。
NVML_PSTATE_UNKNOWN = 32
未知性能状态。
enum nvmlRestrictedAPI_t

允许更改默认权限限制的 API 类型

NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS = 0
更改应用程序时钟的 API,请参阅 nvmlDeviceSetApplicationsClocks 和 nvmlDeviceResetApplicationsClocks
NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS = 1
启用/禁用自动加速时钟的 API,请参阅 nvmlDeviceSetAutoBoostedClocksEnabled
NVML_RESTRICTED_API_COUNT
enum nvmlReturn_t

NVML API 调用的返回值。

NVML_SUCCESS = 0
操作成功。
NVML_ERROR_UNINITIALIZED = 1
NVML 未首先使用 nvmlInit() 初始化。
NVML_ERROR_INVALID_ARGUMENT = 2
提供的参数无效。
NVML_ERROR_NOT_SUPPORTED = 3
目标设备上不支持请求的操作。
NVML_ERROR_NO_PERMISSION = 4
当前用户没有操作权限。
NVML_ERROR_ALREADY_INITIALIZED = 5
已弃用:现在允许多次初始化,通过引用计数。
NVML_ERROR_NOT_FOUND = 6
查找对象的查询不成功。
NVML_ERROR_INSUFFICIENT_SIZE = 7
输入参数不够大。
NVML_ERROR_INSUFFICIENT_POWER = 8
设备的外部电源线未正确连接。
NVML_ERROR_DRIVER_NOT_LOADED = 9
NVIDIA 驱动程序未加载。
NVML_ERROR_TIMEOUT = 10
用户提供的超时已过。
NVML_ERROR_IRQ_ISSUE = 11
NVIDIA 内核检测到 GPU 存在中断问题。
NVML_ERROR_LIBRARY_NOT_FOUND = 12
找不到或无法加载 NVML 共享库。
NVML_ERROR_FUNCTION_NOT_FOUND = 13
本地 NVML 版本未实现此功能。
NVML_ERROR_CORRUPTED_INFOROM = 14
infoROM 已损坏
NVML_ERROR_GPU_IS_LOST = 15
GPU 已从总线上脱落或无法访问。
NVML_ERROR_RESET_REQUIRED = 16
GPU 需要重置才能再次使用。
NVML_ERROR_OPERATING_SYSTEM = 17
GPU 控制设备已被操作系统/cgroups 阻止。
NVML_ERROR_LIB_RM_VERSION_MISMATCH = 18
RM 检测到驱动程序/库版本不匹配。
NVML_ERROR_IN_USE = 19
由于 GPU 当前正在使用中,因此无法执行操作。
NVML_ERROR_MEMORY = 20
内存不足。
NVML_ERROR_NO_DATA = 21
没有数据。
NVML_ERROR_VGPU_ECC_NOT_SUPPORTED = 22
目标设备上不支持请求的 vGPU 操作,因为 ECC 已启用。
NVML_ERROR_INSUFFICIENT_RESOURCES = 23
关键资源耗尽,内存除外。
NVML_ERROR_FREQ_NOT_SUPPORTED = 24
关键资源耗尽,内存除外。
NVML_ERROR_ARGUMENT_VERSION_MISMATCH = 25
提供的版本无效/不受支持。
NVML_ERROR_DEPRECATED = 26
请求的功能已弃用。
NVML_ERROR_NOT_READY = 27
系统未准备好进行请求。
NVML_ERROR_GPU_NOT_FOUND = 28
未找到 GPU。
NVML_ERROR_INVALID_STATE = 29
资源未处于执行请求操作的正确状态。
NVML_ERROR_UNKNOWN = 999
发生内部驱动程序错误。
enum nvmlTemperatureSensors_t

温度传感器。

NVML_TEMPERATURE_GPU = 0
GPU 芯片的温度传感器。
NVML_TEMPERATURE_COUNT
enum nvmlTemperatureThresholds_t

温度阈值。

NVML_TEMPERATURE_THRESHOLD_SHUTDOWN = 0
NVML_TEMPERATURE_THRESHOLD_SLOWDOWN = 1
NVML_TEMPERATURE_THRESHOLD_MEM_MAX = 2
NVML_TEMPERATURE_THRESHOLD_GPU_MAX = 3
NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN = 4
NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR = 5
NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX = 6
NVML_TEMPERATURE_THRESHOLD_GPS_CURR = 7
NVML_TEMPERATURE_THRESHOLD_COUNT

NVML API 参考指南 (PDF) - vR570 (更旧版本) - 最后更新于 2025 年 1 月 29 日 - 发送反馈