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用于实体分组管理
用户可以创建一个实体组,并对一组实体执行操作。如果不需要分组,并且用户希望对MTDCGM看到的所有GPU执行命令 ,那么用户可以使用DCGM_GROUP_ALL_GPUS代替分组ID
dcgmReturn_t dcgmGroupCreate (dcgmHandle_t pDcgmHandle, dcgmGroupType_t type, char *groupName, dcgmGpuGrp_t *pDcgmGrpId)
参数:
pDcgmHandle
IN: MTDCGM句柄
type
IN: 实体组的类型
groupName
IN: 指定为新GPU组的名称,为NULL终止的C字符串
pDcgmGrpId
OUT : group ID指针
返回值
- DCGM_ST_OK:组成功创建
- DCGM_ST_BADPARAM:type、groupName、长度或pDcgmGrpId无效
- DCGM_ST_MAX_LIMIT:系统上的组数量已达到最大限制DCGM_MAX_NUM_GROUPS
- DCGM_ST_INIT_ERROR:库初始化失败
接口描述
用于创建一个实体组句柄,该句柄可以存储一个或多个实体ID作为透明句柄返回在pDcgmGrpId中
代替为每个实体单独执行操作,MTDCGM组允许用户对组中的所有实体作为一个单元执行相同的操作
要创建包含系统上所有实体的组,应将类型Field指定为DCGM_GROUP_DEFAULT;要创建一个空组,类型Field应指定为DCGM_GROUP_EMPTY。空组可以通过API dcgmGroupAddDevice、dcgmGroupAddEntity、dcgmGroupRemoveDevice和dcgmGroupRemoveEntity更新为所需的实体集
dcgmReturn_t dcgmGroupDestroy (dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: Group ID
返回值
- DCGM_ST_OK:组成功删除
- DCGM_ST_BADPARAM:groupId无效
- DCGM_ST_INIT_ERROR:库初始化失败
- DCGM_ST_NOT_CONFIGURED:对应组项不存在
接口描述
用于删除由groupId表示的Group
由于MTDCGM Group是实体的一种逻辑分组,即使Group组被删除后也不会对单个实体产生影响
dcgmReturn_t dcgmGroupAddDevice(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, unsigned int gpuId)
参数:
pDcgmHandle
IN: MTDCGM Handle
groupId
IN: 应添加设备的组ID
gpuId
IN: GPU逻辑索引
返回值
- DCGM_ST_OK:GPU逻辑索引成功添加到组中
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_NOT_CONFIGURED:对应组(groupId)项不存在
- DCGM_ST_BADPARAM:gpuId无效或已属于指定组
接口描述
该函数用于将指定的GPU逻辑索引添加到group组中
dcgmReturn_t dcgmGroupAddEntity(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgm_field_entity_group_t entityGroupId, dcgm_field_eid_t entityId)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 应添加设备的组ID
entityGroupId
IN: entityId所属的实体组
entityId
IN: MTDCGM entityId
返回值
- DCGM_ST_OK:实体已成功添加到组中
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_NOT_CONFIGURED:对应组(groupId)项不存在
- DCGM_ST_BADPARAM:entityId无效或已属于指定组
接口描述
用于将指定的实体添加到由groupId组中
dcgmReturn_t dcgmGroupRemoveDevice(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, unsigned int gpuId)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN:需要 移除设备的Group ID
gpuId
IN: GPU逻辑索引
返回值
- DCGM_ST_OK:GPU逻辑索引已成功从组中移除
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_NOT_CONFIGURED:对应组(groupId)项不存在
- DCGM_ST_BADPARAM:gpuId无效或不属于指定组
接口描述
用于从由groupId表示的组中移除指定的GPU逻辑索引
dcgmReturn_t dcgmGroupRemoveEntity (dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgm_field_entity_group_t entityGroupId, dcgm_field_eid_t entityId)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 需要从中移除设备的Group ID
entityGroupId
IN: entityId所属的实体组
entityId
IN: MTDCGM entityId
返回值
- DCGM_ST_OK:实体已成功从组中移除
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_NOT_CONFIGURED:与组(groupId)对应的条目不存在
- DCGM_ST_BADPARAM:entityId无效或不在指定的组中
接口描述
用于从由groupId表示的组中移除指定的实体
dcgmReturn_t dcgmGroupGetInfo(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmGroupInfo_t *pDcgmGroupInfo)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 需要获取信息的Group ID
pDcgmGroupInfo
OUT : Group信息
返回值
- DCGM_ST_OK:成功接收到组信息
- DCGM_ST_BADPARAM:groupId或pDcgmGroupInfo中的任何一个无效
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_MAX_LIMIT:组中不包含GPU
- DCGM_ST_NOT_CONFIGURED:与组(groupId)对应的条目不存在
接口描述
用于获取与groupId表示的Group相对应的信息
pDcgmGroupInfo包括Group名,以及组中存在的Entity列表
dcgmReturn_t dcgmGroupGetAllIds(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupIdList[], unsigned int *count)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupIdList
OUT : Group ID列表
count
OUT : 列表中Group ID的数量
返回值
- DCGM_ST_OK:成功检索到组的ID
- DCGM_ST_BADPARAM:groupIdList或count为空
- DCGM_ST_GENERIC_ERROR:发生未知错误
接口描述
用于获取所有Entity Group的ID
返回的信息是groupIdList中的Group ID列表,以及count数量。需要为groupIdList分配足够的内存,groupIdList分配的最大为MAX_NUM_GROUPS
Field Group
以下API用于Field Group管理
用户可以创建一个Field Group,并一次性对一组Field执行操作
dcgmReturn_t dcgmFieldGroupCreate(dcgmHandle_t dcgmHandle, int numFieldIds, unsigned short *fieldIds, char *fieldGroupName, dcgmFieldGrp_t *dcgmFieldGroupId)
参数:
dcgmHandle
IN: MTDCGM句柄
numFieldIds
IN: 创建Field Group时需要添加的Field数量。必须在1和DCGM_MAX_FIELD_IDS_PER_FIELD_GROUP之间
fieldIds
IN: 要添加到新创建的field组中的Field Id
fieldGroupName
IN: fields group的唯一名称。不能与任何现有的Field Group相同
dcgmFieldGroupId
OUT: 新创建field group的ID
返回值
- DCGM_ST_OK:field group成功创建
- DCGM_ST_BADPARAM:发生任何入参错误
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_MAX_LIMIT:已经存在太多的field group
接口描述
用于创建一个Field Group,并在dcgmFieldGroupId中返回句柄
dcgmReturn_t dcgmFieldGroupDestroy(dcgmHandle_t dcgmHandle, dcgmFieldGrp_t dcgmFieldGroupId)
参数:
dcgmHandle
IN: MTDCGM句柄
dcgmFieldGroupId
IN: 需要移除的Field group ID
返回值
- DCGM_ST_OK:field group成功移除
- DCGM_ST_BADPARAM:任何入参发生错误
- DCGM_ST_INIT_ERROR:库未成功初始化
接口描述
销毁创建的Field Group
dcgmReturn_t dcgmFieldGroupGetInfo(dcgmHandle_t dcgmHandle, dcgmFieldGroupInfo_t *fieldGroupInfo)
参数:
dcgmHandle
IN: MTDCGM句柄
fieldGroupInfo
IN/OUT: 输入:申请好内存的dcgmFieldGroupInfo_t结构体指针,输出:对应Field Group的信息。调用时.version应配置为dcgmFieldGroupInfo_version。fieldGroupId需要配置为要查询信息的fieldGroupId
返回值
- DCGM_ST_OK:field组信息成功返回
- DCGM_ST_BADPARAM:发生任何入参错误
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_VER_MISMATCH:.version未设置或无效
接口描述
用于获取Field Group信息
dcgmReturn_t dcgmFieldGroupGetAll(dcgmHandle_t dcgmHandle, dcgmAllFieldGroup_t *allGroupInfo)
参数:
dcgmHandle
IN: MTDCGM句柄
allGroupInfo
IN/OUT: 输入:申请好内存的dcgmAllFieldGroup_t结构体指针,输出:所有Field Group的信息。在调用时.version应设置为dcgmAllFieldGroup_version
返回值
- DCGM_ST_OK:field组信息成功返回
- DCGM_ST_BADPARAM:发生任何入参错误
- DCGM_ST_INIT_ERROR:库未成功初始化
- DCGM_ST_VER_MISMATCH:.version未设置或无效
接口描述
用于获取系统中所有Field Group的信息
Field接口
DCGMAPI_FI 组
以下API负责监视、取消监视和更新由DCGM_FI_*定义的特定Field
dcgmReturn_t dcgmWatchFields(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long updateFreq, double maxKeepAge, int maxKeepSamples)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID。有关创建Group的详细信息,请参阅dcgmGroupCreate。或者传入DCGM_GROUP_ALL_GPUS作为Group ID,这样可以对所有GPU执行操作
fieldGroupId
IN: 要监视的Field Group ID
updateFreq
IN: 需要更新Filed Group中Field的时间间隔(单位:微秒)
maxKeepAge
IN: 保留Filed Group中Field数据的时间(单位:秒)
maxKeepSamples
IN: 保留的最大样本数。0表示无限制
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:参数无效
接口描述
请求MTDCGM开始给Field Group的数据更新。注意,Field中的值将在下一更新周期时更新,如果要强制更新Field的值,需要调用dcgmUpdateAllFields(1)
dcgmReturn_t dcgmUnwatchFields(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID
fieldGroupId
IN: 取消监视的Field
返回值
- DCGM_ST_OK:函数成功调用
- DCGM_ST_BADPARAM:参数无效
接口描述
请求MTDCGM停止更新Gield ID的值
dcgmReturn_t dcgmGetValuesSince(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long sinceTimestamp, long long *nextSinceTimestamp, dcgmFieldValueEnumeration_f enumCB, void *userData)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID
fieldGroupId
IN: 要返回数据的Field Group ID
sinceTimestamp
IN: 请求数据的时间戳(从1970年开始(微秒)),这将在后续调用中输出到参数nextSinceTimestamp,传入 0 表示请求所有数据
nextSinceTimestamp
OUT: 在下次调用此函数时用于sinceTimestamp的时间戳
enumCB
IN: 为每个Field值更新调用的回调。请注意,每次调用可能会返回多个更新
userData
IN: 要传递给enumCB的userDataField的用户数据指针
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:参数无效
接口描述
请求自给定时间戳以来所有Field值,当前仅适用于GPU实体
dcgmReturn_t dcgmGetValuesSince_v2(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long sinceTimestamp, long long *nextSinceTimestamp, dcgmFieldValueEntityEnumeration_f enumCB, void *userData)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID
fieldGroupId
IN: 要返回数据的Field Group ID
sinceTimestamp
IN: 请求数据的时间戳(从1970年开始(微秒)),这将在后续调用中输出到参数nextSinceTimestamp,传入 0 表示请求所有数据
nextSinceTimestamp
OUT: 在下次调用此函数时用于sinceTimestamp的时间戳
enumCB
IN: 为每个Field值更新调用的回调,每次调用可能会返回多个更新
userData
IN: 要传递给enumCB的userData的用户数据指针
返回值
- DCGM_ST_OK:函数成功调用
- DCGM_ST_BADPARAM\:参数无效
接口描述
请求自给定时间戳以来所有filed值
dcgmReturn_t dcgmGetLatestValues(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, dcgmFieldValueEnumeration_f enumCB, void *userData)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID
fieldGroupId
IN: 要返回数据的Field Group ID
enumCB
IN: 为每个Field值更新调用的回调,每次调用可能会返回多个更新
userData
IN: 要传递给enumCB的userData 的用户数据指针
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:传入参数为无效参数
接口描述
请求Filed Group最新缓存Field 值。当前仅适用于GPU实体
dcgmReturn_t dcgmGetLatestValues_v2(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, dcgmFieldValueEntityEnumeration_f enumCB, void *userData)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个实体的Group ID
fieldGroupId
IN: 要返回数据的Field Group ID
enumCB
IN: 为每个Field 值更新调用的回调,每次调用可能会返回多个更新
userData
IN: 要传递给enumCB的userData 的用户数据指针
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:传入参数为无效参数
接口描述
请求Field Group的最新缓存值
dcgmReturn_t dcgmGetLatestValuesForFields(dcgmHandle_t pDcgmHandle, int gpuId, unsigned short fields[], unsigned int count, dcgmFieldValue_v1 values[])
参数:
pDcgmHandle
IN: MTDCGM句柄
gpuId
IN: GPU逻辑索引
fields
IN: 要返回数据的Field ID。请参阅dcgm_fields.h中以DCGM_FI_开头的定义
count
IN: fields数 组中Field ID的数量
values
OUT: fields[]中Field的最新值
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:传入参数为无效参数
接口描述
请求GPU的最新缓存Field 值
dcgmReturn_t dcgmEntityGetLatestValues(dcgmHandle_t pDcgmHandle, dcgm_field_entity_group_t entityGroup, int entityId, unsigned short fields[], unsigned int count, dcgmFieldValue_v1 values[])
参数:
pDcgmHandle
IN: MTDCGM句柄
entityGroup
IN: entity_group_t
entityId
IN: 表示请求Field所对应的Entity ID
fields
IN: 要返回数据的Field ID。请参阅dcgm_fields.h中以DCGM_FI_开头的定义
count
IN: fields[]数组中的Field ID数量
values
OUT: fields[]中Field的最新Field值
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:传入参数为无效参数
接口描述
请求特定Entity的Field Group最新缓存的Field值
dcgmReturn_t dcgmEntitiesGetLatestValues(dcgmHandle_t pDcgmHandle, dcgmGroupEntityPair_t entities[], unsigned int entityCount, unsigned short fields[], unsigned int fieldCount, unsigned int flags, dcgmFieldValue_v2 values[])
参数:
pDcgmHandle
IN: MTDCGM句柄
entities
IN: 要获取值的Entity列表
entityCount
IN: entities[]中的数量
fields
IN: 要返回数据的Field ID。请参阅dcgm_fields.h中以DCGM_FI_开头的定义
fieldCount
IN: fields[]数组中的Field ID数量
flags
IN: 影响此请求处理方式的可选标志。在此处传递DCGM_FV_FLAG_LIVE_DATA以获取实时值而不是缓存值。有关说明,请参阅flag的说明文档
values
OUT: 请求的Field的最新值。要求数组必须能够保存entityCount * fieldCount的数据
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:其中一个实体来自非GPU类型
- DCGM_ST_BADPARAM:传入参数为无效参数
接口描述
获取一组Entity的Field Group的最新缓存或实时值
注意:返回的Entity不保证任何顺序。为了优化对MUSA驱动的调用,可能会在内部进行重新排序
dcgmReturn_t dcgmGetFieldSummary(dcgmHandle_t pDcgmHandle, dcgmFieldSummaryRequest_t *request)
参数:
pDcgmHandle
IN: MTDCGM句柄
request
IN/OUT: 输入:传入指定的Field Id,Entity Id,结构体版本,Summary类型(详细参考DCGM_SUMMARY_*),开始和结束的统计时间;输出:Summary的结果
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_FIELD_UNSUPPORTED_BY_API:Field 值类型不是int64或double类型
接口描述
获取一段时间内Field 值汇总
健康监视
DCGMAPI_HM 组
本章描述处理GPU健康监控的接口
dcgmReturn_t dcgmHealthSet(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmHealthSystems_t systems)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个Entity Group ID
systems
IN: 枚举值,表示需要设置观测模块枚举值的逻辑与。详细信息请参考dcgmHealthSystems_t
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:传入的参数非法
接口描述
用dcgmHealthSystems_t中定义的给定系统枚举,启动MTDCGM健康检查
dcgmReturn_t dcgmHealthSet_v2(dcgmHandle_t pDcgmHandle, dcgmHealthSetParams_v2 *params)
参数:
pDcgmHandle
IN: MTDCGM句柄
params
IN: 设置需要观测模块健康的参数。查看dcgmHealthSetParams_v2以获取每个参数的接口描述
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:传入的参数非法
接口描述
用dcgmHealthSystems_t中定义的给定系统枚举,开启MTDCGM健康检查
dcgmReturn_t dcgmHealthGet(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmHealthSystems_t *systems)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个Entity Group ID
systems
OUT: 表示所有使能观测模块对应枚举的逻辑与值。参考dcgmHealthSystems_t以获取详细信息
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:传入的参数非法
接口描述
查看MTDCGM健康检查模块的观测状态
dcgmReturn_t dcgmHealthCheck(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmHealthResponse_t *results)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个Entity Group ID
results
OUT: 返回有数据的dcgmHealthResponse_t结构体。使用时results->version必须设置为dcgmHealthResponse_version
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:传入的参数非法
- DCGM_ST_VER_MISMATCH:传入的results->version不是dcgmHealthResponse_version
接口描述
检查自上次配置观测的模块是否发生了errors/failures/warnings错误
在第一次调用时,会创建关于组内所有启用观察的状态信息,但不会提供错误结果。在后续调用中,将返回错误信息
模块
本章描述了查询和配置MTDCGM模块的API
dcgmReturn_t dcgmModuleBlacklist(dcgmHandle_t pDcgmHandle, dcgmModuleId_t moduleId)
参数:
pDcgmHandle
IN: MTDCGM句柄
moduleId
IN: 要加入黑名单的模块ID。使用dcgmModuleGetStatuses获取有效的模块ID列表
返回值
- DCGM_ST_OK:模块成功加入黑名单
- DCGM_ST_IN_USE:模块已经被加载且不能被加入黑名单
- DCGM_ST_BADPARAM:入参缺失或错误
接口描述
将一个模块添加到黑名单列表,表示该模块不能被加载
如果该模块尚未加载,这将阻止它被加载。模块会在在MTDCGM API使用时延迟(lazy)加载,因此在使用后尽快调用此API非常重要。也可以将denylist-modules传递给mt-hostengine二进制文件,以确保在Hostengine启动后立即将模块添加到黑名单
dcgmReturn_t dcgmModuleGetStatuses(dcgmHandle_t pDcgmHandle, dcgmModuleGetStatuses_t *moduleStatuses)
参数:
pDcgmHandle
IN: MTDCGM句柄
moduleStatuses
OUT: 模块状态。调用时应将version设置为dcgmModuleStatuses_version
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:入参非法
接口描述
获取所有MTDCGM模块的加载状态
策略
本章介绍策略管理和验证配置方法
dcgmReturn_t dcgmActionValidate(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmPolicyValidation_t validate, dcgmDiagResponse_t *response)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个Entity Group ID
validate
IN: 验证操作需要执行的诊断等级
response
OUT: 验证之后返回的结果,详细信息请参考dcgmDiagResponse_t
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:运行不支特的validate
- DCGM_ST_BADPARAM:groupId、validate或者statusHandle无效
- DCGM_ST_GENERIC_ERROR:发生未指定的 MTDCGM 错误
- DCGM_ST_GROUP_INCOMPATIBLE:同一组GPU不是同一个sku
接口描述
在系统上手动执行一组GPU的验证功能
dcgmReturn_t dcgmActionValidate_v2(dcgmHandle_t pDcgmHandle, dcgmRunDiag_v9 *drd, dcgmDiagResponse_t *response)
参数:
pDcgmHandle
IN: MTDCGM句柄
drd
IN: 包含group id、测试名称、测试参数、结构体版本以及应执行的验证
response
OUT: 验证之后返回的结果,详细信息请参考dcgmDiagResponse_t 注意:用户应该确保该结构体的初始化(不包含版本号)
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:运行不支特的validate
- DCGM_ST_BADPARAM:groupId、validate或者statusHandle无效
- DCGM_ST_GENERIC_ERROR:发生未指定的 MTDCGM 错误
- DCGM_ST_GROUP_INCOMPATIBLE:同一组GPU不是同一类型
接口描述
action管理器在系统上手动执行一组GPU的验证
注:如果dcgmRunDiag_v9结构体中传入同时传入了validate和testNames,则仅会以testNames为主
dcgmReturn_t dcgmRunDiagnostic(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmDiagnosticLevel_t diagLevel, dcgmDiagResponse_v11 *diagResponse)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 表示一个或多个Entity Group ID
diagLevel
IN: 运行的诊断等级
diagResponse
IN/OUT:MTDCGM诊断结果。调用前需要将.version设置为dcgmDiagResponse_version
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:运行不支特的validate
- DCGM_ST_BADPARAM:groupId、validate或者statusHandle无效
- DCGM_ST_GENERIC_ERROR:发生未指定的 MTDCGM 错误
- DCGM_ST_GROUP_INCOMPATIBLE:同一组GPU不是同一类型
- DCGM_ST_VER_MISMATCH:.version没有赋值或者非法
接口描述
在一组GPU上运行诊断
拓扑
dcgmReturn_t dcgmGetDeviceTopology(dcgmHandle_t pDcgmHandle, unsigned int gpuId, dcgmDeviceTopology_t *pDcgmDeviceTopology)
参数:
pDcgmHandle
IN: MTDCGM句柄
gpuId
IN: 想要获取拓扑信息的GPU设备id
pDcgmDeviceTopology
IN/OUT: gpuId对应设备的拓扑信息,pDcgmDeviceTopology->version置为dcgmDeviceTopology_version,否则将会使用dcgmDeviceTopology_version1调用.
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:运行不支特的validate
- DCGM_ST_VER_MISMATCH:pDcgmDeviceTopology->version传入的值不是dcgmDeviceTopology_version
接口描述
获取gpuId相对应的设备拓扑结构
dcgmReturn_t dcgmGetGroupTopology(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmGroupTopology_t *pDcgmGroupTopology)
参数:
pDcgmHandle
IN: MTDCGM句柄
groupId
IN: 想要获取拓扑信息的Group组id
pDcgmGroupTopology
IN/OUT: groupId对应设备组的拓扑信息,pDcgmgroupTopology->version应置为dcgmGroupTopology_version,否则将会使用dcgmGroupTopology_version1调用.
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:groupId或者pDcgmGroupTopology异常
- DCGM_ST_VER_MISMATCH:pDcgmgroupTopology->version传入的值不是dcgmGroupTopology_version
接口描述
获取groupId相对应的一组设备的拓扑结构
dcgmReturn_t dcgmActionValidateFormatInfo(dcgmHandle_t pDcgmHandle, dcgmRunDiag_v9 *drd, dcgmDiagResponse_t *response)
参数:
pDcgmHandle
IN: MTDCGM句柄
drd
IN: 包含group id、测试名称、测试参数、结构体版本以及应执行的验证
response
OUT: 验证之后返回的结果,详细信息请参考dcgmDiagResponse_t 注意:调用者应该确保该结构体的初始化(不包含版本号)
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_NOT_SUPPORTED:运行不支特的validate
- DCGM_ST_BADPARAM:groupId、validate或者statusHandle无效
- DCGM_ST_GENERIC_ERROR:发生未指定的 MTDCGM 错误
- DCGM_ST_GROUP_INCOMPATIBLE:同一组GPU不是同一类型
接口描述
action管理器在系统上手动执行一组GPU的验证,并将PCIe的Info信息格式化为JSON表示
注:如果dcgmRunDiag_v9结构体中传入同时传入了validate和testNames,则仅会以testNames为主
执行控制
dcgmReturn_t dcgmUpdateAllFields(dcgmHandle_t pDcgmHandle, int waitForUpdate)
参数:
pDcgmHandle
IN: MTDCGM句柄
waitForUpdate
IN: 在返回给调用者之前是否等待更新循环完成, 1表示等待, 0表示不等待
返回值
- DCGM_ST_OK:函数调用成功
- DCGM_ST_BADPARAM:waitForUpdate 无效
- DCGM_ST_GENERIC_ERROR:发生未指定的 MTDCGM 错误
接口描述
此方法用于告诉 MTDCGM 模块更新所有被监视的Fields
注意:如果在初始化(dcgmInit)期间将操作模式设置为手动模式(DCGM_OPERATION_MODE_MANUAL),则必须定期调用此函数,以允许Field监视采集样本
枚举和宏定义
dcgmReturnEnums组
MAKE_DCGM_VERSION(typeName, ver)(unsignedint)(sizeof(typeName)|
((unsignedlong)(ver)<<24U))
为每个结构体创建唯一版本号
DCGM_BLANK_VALUES
表示空值,如果Hostengine操作不成功,则可能返回该值
DCGM_INT32_BLANK 0x7ffffff0
32位整数空值,可以用作未指定的空白
DCGM_INT64_BLANK 0x7ffffffffffffff0
64位整数空值,可以用作未指定的空白
DCGM_FP64_BLANK 140737488355328.0
双精度空值,2^47。FP64有52位的尾数,所以47位仍然可以加1,并表示从0-15的每个值
DCGM_STR_BLANK "<<<NULL>>>"
字符串空值
DCGM_INT32_NOT_FOUND (DCGM_INT32_BLANK+1)
表示找不到INT32数据的错误
DCGM_INT64_NOT_FOUND (DCGM_INT64_BLANK+1)
表示找不到INT64数据的错误
DCGM_FP64_NOT_FOUND (DCGM_FP64_BLANK+1.0)
表示找不到FP64数据的错误
DCGM_STR_NOT_FOUND "<<<NOT_FOUND>>>"
表示找不到STR数据的错误
DCGM_INT32_NOT_SUPPORTED (DCGM_INT32_BLANK+2)