API 参考手册
数据中心GPU管理器 (MTDCMG)
API 参考
版本:v1.1.6
2026-07-14
模块
以下是所有模块的介绍
管理
DCGMAPI_Admin组
本节描述了MTDCGM的管理接口。用户在调用任何其他接口之前必须调用dcgmInit()进行初始化,并在不再使用MTDCGM时调用dcgmShutdown()进行资源释放。以下是管理模块中的API介绍:
初始化和关闭
DCGMAPI_Admin_InitShut 组
描述初始化和关闭MTDCGM引擎的API
dcgmReturn_t dcgmInit (void)
返回值
- DCGM_ST_OK:如果MTDCGM已正确初始化
- DCGM_ST_INIT_ERROR:如果初始化MTDCGM动态库时发生错误
接口描述
此函数用于在进程中初始化MTDCGM。必须在调用dcgmStartEmbedded()或dcgmConnect()之前调用
dcgmReturn_t dcgmShutdown (void)
返回值
- DCGM_ST_OK:如果MTDCGM已正确关闭
- DCGM_ST_UNINITIALIZED:如果MTDCGM动态库未正确关闭
接口描述
此接口用于关闭MTDCGM。任何以嵌入hostengines或远程连接的方式也将自动关闭
dcgmReturn_t dcgmStartEmbedded (dcgmOperationMode_t opMode, dcgmHandle_t *pDcgmHandle)
参数:
opMode
IN: 指定使用MTDCGM的操作模式,自动或手动收集数据
pDcgmHandle
OUT : MTDCGM Handle用于API调用
返回值
- DCGM_ST_OK:如果MTDCGM在进程中成功启动
- DCGM_ST_UNINITIALIZED:如果尚未使用dcgmInit初始化MTDCGM
接口描述
在进程中以embedded的方式启动Hostengine,这种方式以加载MTDCGM动态库的形式使用。在这种模式下,用户必须定期调用dcgmUpdateAllFields API接口,让代理服务执行数据收集操作
dcgmReturn_t dcgmStartEmbedded_v2 (dcgmStartEmbeddedV2Params_v1 *params)
参数:
params
IN/OUT : 指向dcgmStartEmbeddedV2Params_v1 or dcgmStartEmbeddedV2Params_v2的指针
返回值
- DCGM_ST_OK:如果MTDCGM在进程中成功启动
- DCGM_ST_UNINITIALIZED:如果尚未使用dcgmInit初始化MTDCGM或者Hostengine服务未运行
接口描述
在进程中启动嵌入Hostengine代理
代理模式需要将MTDCGM作为共享库加载,此模式与自主代理需要管理的额外操作不同,嵌入代理不需要任何额外操作。在这种模式下,用户必须定期调用dcgmUpdateAllFields来执行数据收集
注意:调用时通过传入params->version的版本号来决定实际的调用类型
dcgmReturn_t dcgmStopEmbedded (dcgmHandle_t pDcgmHandle)
参数:
pDcgmHandle
IN: 从dcgmStartEmbedded获取的MTDCGM Handle
返回值
- DCGM_ST_OK:如果MTDCGM在进程中成功停止
- DCGM_ST_UNINITIALIZED:如果尚未使用dcgmInit初始化MTDCGM或嵌入主机代理服务未运行
- DCGM_ST_BADPARAM:如果提供了无效参数
- DCGM_ST_INIT_ERROR:如果尝试启动代理服务时发生错误
接口描述
停止当前进程中由dcgmStartEmbedded启动的嵌入代理服务
dcgmReturn_t dcgmConnect(const char *ipAddress, dcgmHandle_t *pDcgmHandle)
参数:
ipAddress
IN: 用于连接Hostengine的有效IP地址。如果ipAddress指定为x.x.x.x,它将尝试连接到由DCGM_HE_PORT_NUMBER指定的默认端口。如果ipAddress指定为x.x.x.x:yyyy,它将尝试连接到由yyyy指定的端口
pDcgmHandle
OUT : Hostengine的MTDCGM句柄
返回值
- DCGM_ST_OK:成功连接hostengine
- DCGM_ST_CONNECTION_NOT_VALID:hostengine不可达
- DCGM_ST_UNINITIALIZED:MTDCGM未被dcgmInit初始化
- DCGM_ST_BADPARAM:pDcgmHandle是空指针或者ipAddress无效
- DCGM_ST_INIT_ERROR:MTDCGM在初始化客户端库时遇到错误
接口描述
此函数用于连接到独立的mt-hostengine,Hostengine是通过运行mt-hostengine命令启动 注意:dcgmConnect_v2提供了额外的连接选项
dcgmReturn_t dcgmConnect_v2 (const char *ipAddress, dcgmConnectV2Params_t *connectParams, dcgmHandle_t *pDcgmHandle)
参数:
ipAddress
IN: 用于连接Hostengine的有效IP地址。如果ipAddress指定为x.x.x.x,它将尝试连接到由DCGM_HE_PORT_NUMBER指定的默认端口。如果ipAddress指定为x.x.x.x:yyyy,它将尝试连接到由yyyy指定的端口
connectParams
IN:额外的连接参数,详细请参考:dcgmConnectV2Params_t
pDcgmHandle
OUT : Hostengine的MTDCGM句柄
返回值
- DCGM_ST_OK:如果成功连接Hostengine
- DCGM_ST_CONNECTION_NOT_VALID:远程Hostengine不可达
- DCGM_ST_UNINITIALIZED:MTDCGM未被dcgmInit初始化过
- DCGM_ST_BADPARAM:pDcgmHandle是空指针或者ipAddress无效
- DCGM_ST_INIT_ERROR:MTDCGM在初始化客户端库时遇到错误
接口描述
此方法用于连接到独立的mt-hostengine,Hostengine是通过运行mt-hostengine命令启动
dcgmReturn_t dcgmDisconnect (dcgmHandle_t pDcgmHandle)
参数:
pDcgmHandle
IN: 来自dcgmConnect的MTDCGM句柄
返回值
- DCGM_ST_OK:成功从Hostengine断开连接
- DCGM_ST_UNINITIALIZED:MTDCGM未被dcgmInit初始化过
- DCGM_ST_BADPARAM:pDcgmHandle是空指针
- DCGM_ST_GENERIC_ERROR:未知内部错误发生
接口描述
此函数用于从独立的mt-hostengine中断开连接
DCGM Hostengine的辅助信息
DCGMAPI_Admin_Info组
本节的API用于描述如何获取MTDCGM Hostengine的基本信息
dcgmReturn_t dcgmVersionInfo (dcgmVersionInfo_t *pVersionInfo)
参数:
pVersionInfo
OUT : 返回编译版本信息
返回值
- DCGM_ST_OK:成功获取编译版本信息
- DCGM_ST_BADPARAM:pVersionInfo为空指针
- DCGM_ST_VER_MISMATCH:期望和提供的dcgmVersionInfo_t版本不匹配
接口描述 该函数用于获取MTDCGM编译时的编译版本信息
这一节的API描述获取MTDCGM引擎的基本信息
dcgmReturn_t dcgmHostengineVersionInfo (dcgmHandle_t pDcgmHandle, dcgmVersionInfo_t *pVersionInfo)
参数:
pDcgmHandle
IN: MTDCGM句柄
pVersionInfo
OUT : 编版本信息
返回值
- DCGM_ST_OK:成功获取编译版本信息
- DCGM_ST_BADPARAM:pVersionInfo为空指针
- DCGM_ST_VER_MISMATCH:期望和提供的dcgmVersionInfo_t版本不匹配
接口描述
该函数用于获取MTDCGM编译时的编译版本信息
dcgmReturn_t dcgmHostengineSetLoggingSeverity(dcgmHandle_t pDcgmHandle, dcgmSettingsSetLoggingSeverity_t *logging)
参数:
pDcgmHandle
IN: MTDCGM句柄
logging
IN: dcgmSettingsSetLoggingSeverity_t结构体包含目标logger和日志等级
返回值
- DCGM_ST_OK:日志等级设置成功
- DCGM_ST_BADPARAM:非法的logger或者日志等级
- DCGM_ST_VER_MISMATCH:期望和提供的dcgmSettingsSetLoggingSeverity_t版本不匹配
接口描述
此函数用于配置Hostengine上的日志信息
dcgmReturn_t dcgmHostengineIsHealthy(dcgmHandle_t pDcgmHandle, dcgmHostengineHealth_t *heHealth)
参数:
pDcgmHandle
IN: MTDCGM句柄
heHealth
OUT : Hostengine健康状况的结构体。如果heHealth.hostengineHealth为0,则Hostengine健康。非零值表示不健康,由返回的错误代码确定原因
返回值
- DCGM_ST_OK:成功获取主机代理的健康状态
- DCGM_ST_BADPARAM:isHealthy指针非法
接口描述
此函数用于返回Hostengine是否认为自身健康
const char *errorString(dcgmReturn_t result)
参数:
result
IN: MTDCGM其他API接口的返回结果
返回值
- 如果传入的错误码是有效的,结果返回带有错误码的可读字符串
- 如果是无效错误码,则返回空指针
接口描述
此函数将API接口的返回值转换为可读的MTDCGM错误信息
dcgmReturn_t dcgmModuleIdToName(dcgmModuleId_t id, char const **name)
参数:
id
IN: Module ID
name
OUT : Module Name
返回值
- DCGM_ST_OK:获取的模块名字有效
- DCGM_ST_BADPARAM:Module ID无效
接口描述
该接口将Module ID转换为Module Name
系统
DCGMAPI_SYS组
本章描述了用于识别Node节点上的GPU设备集合的API、可操作一组GPU设备的Grouping、以及从其他接口返回的Status管理API。系统模块中的API可以分为以下类别:
Discovery
Grouping
Field Group
Discovery
以下API用于发现节点上的GPU及其属性
dcgmReturn_t dcgmGetAllDevices (dcgmHandle_t pDcgmHandle, unsigned int gpuIdList[DCGM_MAX_NUM_DEVICES], int *count)
参数:
pDcgmHandle
IN: MTDCGM句柄
gpuIdList
OUT : Node节点上由GPU逻辑索引组成的数组
count
OUT : gpuIdList中的GPU数量
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:gpuIdList或count无效
接口描述
此函数用于获取Node节点上所有设备的标识符。标识符表示系统上每个GPU的逻辑索引,这些标识在Hostengine的生命周期内保持不变。如果Hostengine重新启动,则需要重新查询此列表
dcgmReturn_t dcgmGetAllSupportedDevices(dcgmHandle_t pDcgmHandle, unsigned int gpuIdList[DCGM_MAX_NUM_DEVICES], int *count)
参数:
pDcgmHandle
IN: MTDCGM句柄
gpuIdList
OUT : 由Node节点上支持的GPU逻辑索引组成的数组
count
OUT : gpuIdList中的GPU数量
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:gpuIdList或count无效
接口描述
此方法用于获取系统上所有MTDCGM支持的设备的标识符。标识符代表系统上每个GPU的MTDCGM GPU逻辑索引,并且在引擎的生命周期内是不可变的。如果引擎重新启动,应重新查询此列表
当前dcgmGetAllSupportedDevices()接口和dcgmGetAllDevices()返回值一致
dcgmReturn_t dcgmGetDeviceAttributes(dcgmHandle_t pDcgmHandle, unsigned int gpuId, dcgmDeviceAttributes_t *pDcgmAttr)
参数:
pDcgmHandle
IN: MTDCGM句柄
gpuId
IN: GPU逻辑索引
pDcgmAttr
IN/OUT : 对应gpuId的设备属性。在调用时需要将pDcgmAttr->version设置为dcgmDeviceAttributes_version
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_VER_MISMATCH:pDcgmAttr->version无效或者不匹配
接口描述
该函数用于获取指定gpuId的设备属性
如果某一个设备属性获取失败,则Field将被填充为DCGM_BLANK_VALUES(该值在dcgm_structs.h中定义)
dcgmReturn_t dcgmGetEntityGroupEntities(dcgmHandle_t dcgmHandle, dcgm_field_entity_group_t entityGroup, dcgm_field_eid_t *entities, int *numEntities, unsigned int flags)
参数:
dcgmHandle
IN: MTDCGM句柄
entityGroup
IN: 实体类型,信息类型请参考dcgm_field_entity_group_t中的定义
entities
OUT: entityGroup的实体数组
numEntities
IN/OUT: 作为入参时,表示entityList[]数组可以容纳的entity数量。作为出参时,表示entityList中实际存储的entity数量
flags
IN: 用于修改此请求行为的标志。请参见dcgm_structs.h中#defines的DCGM_GEGE_FLAG_*
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_INSUFFICIENT_SIZE:numEntities不够容纳entityGroup中的实体数量。numEntities将包含完成此请求所需的容量
- DCGM_ST_NOT_SUPPORTED:给定的entityGroup是不支持的枚举类型
- DCGM_ST_BADPARAM:传入的参数无效
接口描述
获取给定实体组的实体列表
此API可用于替代dcgmGetAllDevices
Grouping
以下API用于实体分组管理