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

4.1. 设备结构体

struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
union 
struct 

定义

#define NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE 32
#define NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE 16
#define NVML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"
#define NVML_DEVICE_PCI_BUS_ID_FMT_ARGS ( pciInfo )
#define NVML_DEVICE_PCI_BUS_ID_LEGACY_FMT "%04X:%02X:%02X.0"
#define NVML_MAX_PHYSICAL_BRIDGE (128)
#define NVML_NVLINK_MAX_LINKS 18
#define NVML_VALUE_NOT_AVAILABLE (-1)
#define nvmlProcessDetailList_v1

枚举

enum nvmlBridgeChipType_t
enum nvmlCoolerControl_t
enum nvmlCoolerTarget_t
enum nvmlGpuTopologyLevel_t
enum nvmlIntNvLinkDeviceType_t
enum nvmlNvLinkCapability_t
enum nvmlNvLinkErrorCounter_t
enum nvmlNvLinkUtilizationCountPktTypes_t
enum nvmlNvLinkUtilizationCountUnits_t
enum nvmlPcieUtilCounter_t
enum nvmlPerfPolicyType_t
enum nvmlSamplingType_t
enum nvmlThermalController_t
enum nvmlThermalTarget_t
enum nvmlValueType_t

定义

#define NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE 32

保证缓冲区大小足够大,以容纳 PCI 总线 ID

#define NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE 16

保证缓冲区大小足够大,以容纳 busIdLegacy 的 PCI 总线 ID

#define NVML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"

busId 的 PCI 格式字符串

#define NVML_DEVICE_PCI_BUS_ID_FMT_ARGS ( pciInfo )

用于从 nvmlPciInfo_t 填充 pci 总线 ID 格式的实用宏

(pciInfo)->domain, \ (pciInfo)->bus, \ (pciInfo)->device

#define NVML_DEVICE_PCI_BUS_ID_LEGACY_FMT "%04X:%02X:%02X.0"

busIdLegacy 的 PCI 格式字符串

#define NVML_MAX_PHYSICAL_BRIDGE (128)

每个板卡物理桥接器的最大限制

#define NVML_NVLINK_MAX_LINKS 18

支持的最大 NvLink 链路数

#define NVML_VALUE_NOT_AVAILABLE (-1)

某些字段在不可用时采用的特殊常量。当只有结构体的一部分不可用时使用。

每个结构体都明确说明何时检查此值。

#define nvmlProcessDetailList_v1

nvmlProcessDetailList 版本

NVML_STRUCT_VERSION(ProcessDetailList, 1)

枚举

enum nvmlBridgeChipType_t

枚举桥接芯片类型

NVML_BRIDGE_CHIP_PLX = 0
NVML_BRIDGE_CHIP_BRO4 = 1
enum nvmlCoolerControl_t

散热器控制类型

NVML_THERMAL_COOLER_SIGNAL_NONE = 0
此散热器没有控制信号。
NVML_THERMAL_COOLER_SIGNAL_TOGGLE = 1
此散热器只能切换为 ON 或 OFF(例如开关)。
NVML_THERMAL_COOLER_SIGNAL_VARIABLE = 2
此散热器的级别可以在某个最小值到某个最大值之间调整(例如旋钮)。
NVML_THERMAL_COOLER_SIGNAL_COUNT
enum nvmlCoolerTarget_t

散热器的目标

NVML_THERMAL_COOLER_TARGET_NONE = 1<<0
此散热器不冷却任何东西。
NVML_THERMAL_COOLER_TARGET_GPU = 1<<1
此散热器可以冷却 GPU。
NVML_THERMAL_COOLER_TARGET_MEMORY = 1<<2
此散热器可以冷却显存。
NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY = 1<<3
此散热器可以冷却电源。
NVML_THERMAL_COOLER_TARGET_GPU_RELATED = (NVML_THERMAL_COOLER_TARGET_GPU|NVML_THERMAL_COOLER_TARGET_MEMORY|NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY)
此散热器冷却与其目标 GPU 相关的所有组件。GPU_RELATED = GPU | MEMORY | POWER_SUPPLY。
enum nvmlGpuTopologyLevel_t

表示系统中两个 GPU 之间的级别关系。枚举值之间留有间隔,以便将来添加更多关系

NVML_TOPOLOGY_INTERNAL = 0
NVML_TOPOLOGY_SINGLE = 10
NVML_TOPOLOGY_MULTIPLE = 20
NVML_TOPOLOGY_HOSTBRIDGE = 30
NVML_TOPOLOGY_NODE = 40
NVML_TOPOLOGY_SYSTEM = 50
enum nvmlIntNvLinkDeviceType_t

枚举 NvLink 的远程设备类型

NVML_NVLINK_DEVICE_TYPE_GPU = 0x00
NVML_NVLINK_DEVICE_TYPE_IBMNPU = 0x01
NVML_NVLINK_DEVICE_TYPE_SWITCH = 0x02
NVML_NVLINK_DEVICE_TYPE_UNKNOWN = 0xFF
enum nvmlNvLinkCapability_t

枚举 NvLink 可查询的功能

NVML_NVLINK_CAP_P2P_SUPPORTED = 0
NVML_NVLINK_CAP_SYSMEM_ACCESS = 1
NVML_NVLINK_CAP_P2P_ATOMICS = 2
NVML_NVLINK_CAP_SYSMEM_ATOMICS = 3
NVML_NVLINK_CAP_SLI_BRIDGE = 4
NVML_NVLINK_CAP_VALID = 5
NVML_NVLINK_CAP_COUNT
enum nvmlNvLinkErrorCounter_t

枚举 NvLink 可查询的错误计数器

NVML_NVLINK_ERROR_DL_REPLAY = 0
NVML_NVLINK_ERROR_DL_RECOVERY = 1
NVML_NVLINK_ERROR_DL_CRC_FLIT = 2
NVML_NVLINK_ERROR_DL_CRC_DATA = 3
NVML_NVLINK_ERROR_DL_ECC_DATA = 4
NVML_NVLINK_ERROR_COUNT
enum nvmlNvLinkUtilizationCountPktTypes_t

枚举表示要计数的 NvLink 利用率计数器数据包类型 ** 这仅适用于单位为数据包或字节的情况 ** 如 nvmlNvLinkUtilizationCountUnits_t 中指定 ** 所有数据包过滤器描述都以目标 GPU 为中心 ** 这些可以“OR”在一起

NVML_NVLINK_COUNTER_PKTFILTER_NOP = 0x1
NVML_NVLINK_COUNTER_PKTFILTER_READ = 0x2
NVML_NVLINK_COUNTER_PKTFILTER_WRITE = 0x4
NVML_NVLINK_COUNTER_PKTFILTER_RATOM = 0x8
NVML_NVLINK_COUNTER_PKTFILTER_NRATOM = 0x10
NVML_NVLINK_COUNTER_PKTFILTER_FLUSH = 0x20
NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA = 0x40
NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA = 0x80
NVML_NVLINK_COUNTER_PKTFILTER_ALL = 0xFF
enum nvmlNvLinkUtilizationCountUnits_t

枚举表示 NvLink 利用率计数器数据包单位

NVML_NVLINK_COUNTER_UNIT_CYCLES = 0
NVML_NVLINK_COUNTER_UNIT_PACKETS = 1
NVML_NVLINK_COUNTER_UNIT_BYTES = 2
NVML_NVLINK_COUNTER_UNIT_RESERVED = 3
NVML_NVLINK_COUNTER_UNIT_COUNT
enum nvmlPcieUtilCounter_t

表示可查询的 PCIe 利用率计数器

NVML_PCIE_UTIL_TX_BYTES = 0
NVML_PCIE_UTIL_RX_BYTES = 1
NVML_PCIE_UTIL_COUNT
enum nvmlPerfPolicyType_t

表示可以查询违规时间的性能策略类型

NVML_PERF_POLICY_POWER = 0
电源违规导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_THERMAL = 1
热量违规导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_SYNC_BOOST = 2
同步加速导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_BOARD_LIMIT = 3
板卡限制导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_LOW_UTILIZATION = 4
低利用率导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_RELIABILITY = 5
板卡可靠性限制导致 GPU 降至应用时钟以下的时长。
NVML_PERF_POLICY_TOTAL_APP_CLOCKS = 10
任何限制器(上述 0-5)导致 GPU 保持在应用时钟以下的总时间。
NVML_PERF_POLICY_TOTAL_BASE_CLOCKS = 11
GPU 保持在基本时钟以下的总时间。
NVML_PERF_POLICY_COUNT
enum nvmlSamplingType_t

表示采样事件的类型

NVML_TOTAL_POWER_SAMPLES = 0
表示 GPU 消耗的总功率。
NVML_GPU_UTILIZATION_SAMPLES = 1
表示在一个或多个内核在 GPU 上执行期间的时间百分比。
NVML_MEMORY_UTILIZATION_SAMPLES = 2
表示全局(设备)显存正在被读取或写入的时间百分比。
NVML_ENC_UTILIZATION_SAMPLES = 3
表示 NVENC 保持繁忙的时间百分比。
NVML_DEC_UTILIZATION_SAMPLES = 4
表示 NVDEC 保持繁忙的时间百分比。
NVML_PROCESSOR_CLK_SAMPLES = 5
表示处理器时钟采样。
NVML_MEMORY_CLK_SAMPLES = 6
表示显存时钟采样。
NVML_MODULE_POWER_SAMPLES = 7
表示模块功耗采样,适用于 Grace Hopper 及更高版本的总模块功耗。
NVML_JPG_UTILIZATION_SAMPLES = 8
表示 NVJPG 保持繁忙的时间百分比。
NVML_OFA_UTILIZATION_SAMPLES = 9
表示 NVOFA 保持繁忙的时间百分比。
NVML_SAMPLINGTYPE_COUNT
enum nvmlThermalController_t

表示热传感器控制器

NVML_THERMAL_CONTROLLER_NONE = 0
NVML_THERMAL_CONTROLLER_GPU_INTERNAL
NVML_THERMAL_CONTROLLER_ADM1032
NVML_THERMAL_CONTROLLER_ADT7461
NVML_THERMAL_CONTROLLER_MAX6649
NVML_THERMAL_CONTROLLER_MAX1617
NVML_THERMAL_CONTROLLER_LM99
NVML_THERMAL_CONTROLLER_LM89
NVML_THERMAL_CONTROLLER_LM64
NVML_THERMAL_CONTROLLER_G781
NVML_THERMAL_CONTROLLER_ADT7473
NVML_THERMAL_CONTROLLER_SBMAX6649
NVML_THERMAL_CONTROLLER_VBIOSEVT
NVML_THERMAL_CONTROLLER_OS
NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS
NVML_THERMAL_CONTROLLER_NVSYSCON_E551
NVML_THERMAL_CONTROLLER_MAX6649R
NVML_THERMAL_CONTROLLER_ADT7473S
NVML_THERMAL_CONTROLLER_UNKNOWN = -1
enum nvmlThermalTarget_t

表示热传感器目标

NVML_THERMAL_TARGET_NONE = 0
NVML_THERMAL_TARGET_GPU = 1
GPU 核心温度需要 NvPhysicalGpuHandle。
NVML_THERMAL_TARGET_MEMORY = 2
GPU 显存温度需要 NvPhysicalGpuHandle。
NVML_THERMAL_TARGET_POWER_SUPPLY = 4
GPU 电源温度需要 NvPhysicalGpuHandle。
NVML_THERMAL_TARGET_BOARD = 8
GPU 板载环境温度需要 NvPhysicalGpuHandle。
NVML_THERMAL_TARGET_VCD_BOARD = 9
视觉计算设备板卡温度需要 NvVisualComputingDeviceHandle。
NVML_THERMAL_TARGET_VCD_INLET = 10
视觉计算设备入口温度需要 NvVisualComputingDeviceHandle。
NVML_THERMAL_TARGET_VCD_OUTLET = 11
视觉计算设备出口温度需要 NvVisualComputingDeviceHandle。
NVML_THERMAL_TARGET_ALL = 15
NVML_THERMAL_TARGET_UNKNOWN = -1
enum nvmlValueType_t

表示返回的采样值的类型

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_COUNT

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