字段 API
- group DCGMAPI_FI
这些 API 负责监视、取消监视和更新由 DCGM_FI_* 定义的特定字段。
函数
-
dcgmReturn_t dcgmWatchFields(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long updateFreq, double maxKeepAge, int maxKeepSamples)
请求 DCGM 开始记录给定字段集合的更新。
请注意,字段的首次更新将不会发生,直到下一个字段更新周期。要强制执行字段更新周期,请调用 dcgmUpdateAllFields(1)。
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个实体的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作,或作为 DCGM_GROUP_ALL_NVSWITCHES 以对所有 NvSwitch 执行操作。
fieldGroupId – IN: 要监视的字段。
updateFreq – IN: 更新此字段的频率,单位为微秒
maxKeepAge – IN: 此字段的数据保留时间,单位为秒
maxKeepSamples – IN: 要保留的最大样本数。0=无限制
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmUnwatchFields(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId)
请求 DCGM 停止记录给定字段集合的更新。
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个实体的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作,或作为 DCGM_GROUP_ALL_NVSWITCHES 以对所有 NvSwitch 执行操作。
fieldGroupId – IN: 要取消监视的字段。
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmGetValuesSince(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long sinceTimestamp, long long *nextSinceTimestamp, dcgmFieldValueEnumeration_f enumCB, void *userData)
请求自给定时间戳以来已更新的所有字段值的更新。
此版本仅适用于 GPU 实体。对于包含 NvSwitch 的实体组,请使用 dcgmGetValuesSince_v2。
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个 GPU 的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作。
fieldGroupId – IN: 要为其返回数据的字段
sinceTimestamp – IN: 请求自那时起的值的时间戳,单位为自 1970 年以来的微秒数。这将会在 nextSinceTimestamp 中返回,用于后续调用。0 = 请求所有数据
nextSinceTimestamp – OUT: 时间戳,用于下次调用此函数时作为 sinceTimestamp
enumCB – IN: 为每个字段值更新调用的回调。请注意,每次调用中可以返回多个更新
userData – IN: 用户数据指针,用于传递到 enumCB 的 userData 字段。
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_NOT_SUPPORTED 如果其中一个实体来自非 GPU 类型
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmGetValuesSince_v2(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long sinceTimestamp, long long *nextSinceTimestamp, dcgmFieldValueEntityEnumeration_f enumCB, void *userData)
请求自给定时间戳以来已更新的所有字段值的更新。
此版本适用于非 GPU 实体,如 NvSwitch
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个实体的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作,或作为 DCGM_GROUP_ALL_NVSWITCHES 以对所有 NvSwitch 执行操作。
fieldGroupId – IN: 要为其返回数据的字段
sinceTimestamp – IN: 请求自那时起的值的时间戳,单位为自 1970 年以来的微秒数。这将会在 nextSinceTimestamp 中返回,用于后续调用。0 = 请求所有数据
nextSinceTimestamp – OUT: 时间戳,用于下次调用此函数时作为 sinceTimestamp
enumCB – IN: 为每个字段值更新调用的回调。请注意,每次调用中可以返回多个更新
userData – IN: 用户数据指针,用于传递到 enumCB 的 userData 字段。
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmGetLatestValues(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, dcgmFieldValueEnumeration_f enumCB, void *userData)
请求字段值集合的最新缓存字段值。
此版本仅适用于 GPU 实体。对于包含 NvSwitch 的实体组,请使用 dcgmGetLatestValues_v2。
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个 GPU 的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作。
fieldGroupId – IN: 要为其返回数据的字段。
enumCB – IN: 为每个字段值更新调用的回调。请注意,每次调用中可以返回多个更新
userData – IN: 用户数据指针,用于传递到 enumCB 的 userData 字段。
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_NOT_SUPPORTED 如果其中一个实体来自非 GPU 类型
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmGetLatestValues_v2(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, dcgmFieldValueEntityEnumeration_f enumCB, void *userData)
请求字段值集合的最新缓存字段值。
此版本适用于非 GPU 实体,如 NvSwitch
- 参数:
pDcgmHandle – IN: DCGM 句柄
groupId – IN: 组 ID,表示一个或多个实体的集合。有关创建组的详细信息,请查看 dcgmGroupCreate。或者,传入组 ID 作为 DCGM_GROUP_ALL_GPUS 以对所有 GPU 执行操作,或作为 DCGM_GROUP_ALL_NVSWITCHES 以对所有 NvSwitch 执行操作。
fieldGroupId – IN: 要为其返回数据的字段。
enumCB – IN: 为每个字段值更新调用的回调。请注意,每次调用中可以返回多个更新
userData – IN: 用户数据指针,用于传递到 enumCB 的 userData 字段。
- 返回值:
DCGM_ST_OK 如果调用成功
DCGM_ST_NOT_SUPPORTED 如果其中一个实体来自非 GPU 类型
DCGM_ST_BADPARAM 如果参数无效
-
dcgmReturn_t dcgmGetLatestValuesForFields(dcgmHandle_t pDcgmHandle, int gpuId, unsigned short fields[], unsigned int count, dcgmFieldValue_v1 values[])
请求 GPU 的最新缓存字段值。
- 参数:
pDcgmHandle – IN: DCGM 句柄
gpuId – IN: Gpu ID,表示请求字段的 GPU。
fields – IN: 要返回数据的字段 ID。 请参阅 dcgm_fields.h 中以 DCGM_FI_ 开头的定义。
count – IN: fields[] 数组中的字段 ID 数量。
values – OUT: fields[] 中字段的最新字段值。
-
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: DCGM 句柄
entityGroup – IN: entity_group_t (例如 switch)
entityId – IN: 表示请求字段的实体的实体 ID。
fields – IN: 要返回数据的字段 ID。 请参阅 dcgm_fields.h 中以 DCGM_FI_ 开头的定义。
count – IN: fields[] 数组中的字段 ID 数量。
values – OUT: fields[] 中字段的最新字段值。
-
dcgmReturn_t dcgmEntitiesGetLatestValues(dcgmHandle_t pDcgmHandle, dcgmGroupEntityPair_t entities[], unsigned int entityCount, unsigned short fields[], unsigned int fieldCount, unsigned int flags, dcgmFieldValue_v2 values[])
请求一组实体的字段列表的最新缓存或实时字段值。
注意:不保证返回的实体的顺序。 为了优化对 NVIDIA 驱动程序的调用,可能会在内部重新排序。
- 参数:
pDcgmHandle – IN: DCGM 句柄
entities – IN: 要获取值的实体列表
entityCount – IN: entities[] 中的条目数
fields – IN: 要返回数据的字段 ID。 请参阅 dcgm_fields.h 中以 DCGM_FI_ 开头的定义。
fieldCount – IN: fields[] 数组中的字段 ID 数量。
flags – IN: 影响此请求处理方式的可选标志。 传递 DCGM_FV_FLAG_LIVE_DATA 以在此处检索实时驱动程序值,而不是缓存值。 有关注意事项,请参阅该标志的文档。
values – OUT: 请求的字段的最新字段值。 这必须能够容纳 entityCount * fieldCount 字段值记录。
-
dcgmReturn_t dcgmGetFieldSummary(dcgmHandle_t pDcgmHandle, dcgmFieldSummaryRequest_t *request)
获取一段时间内字段 ID 的值摘要。
- 参数:
pDcgmHandle – IN: DCGM 句柄
request – IN/OUT: 指向详细说明请求并包含响应的结构的指针
- 返回值:
DCGM_ST_OK 如果调用成功
如果字段不是 int64 或 double 类型,则 DCGM_ST_FIELD_UNSUPPORTED_BY_API
-
dcgmReturn_t dcgmWatchFields(dcgmHandle_t pDcgmHandle, dcgmGpuGrp_t groupId, dcgmFieldGrp_t fieldGroupId, long long updateFreq, double maxKeepAge, int maxKeepSamples)