5.8. CUPTI PM 采样 API
用于启用、禁用、启动、停止和解码 PM 采样的函数。
数据结构
- CUpti_PmSampling_CounterDataImage_Initialize_Params
cuptiPmSamplingCounterDataImageInitialize 的参数。
- CUpti_PmSampling_CounterData_GetSampleInfo_Params
cuptiPmSamplingCounterDataGetSampleInfo 的参数。
- CUpti_PmSampling_DecodeData_Params
cuptiPmSamplingDecodeData 的参数。
- CUpti_PmSampling_Disable_Params
cuptiPmSamplingDisable 的参数。
- CUpti_PmSampling_Enable_Params
cuptiPmSamplingEnable 的参数。
- CUpti_PmSampling_GetCounterAvailability_Params
cuptiPmSamplingGetCounterData 的参数。
- CUpti_PmSampling_GetCounterDataInfo_Params
cuptiPmSamplingGetCounterDataInfo 的参数。
- CUpti_PmSampling_GetCounterDataSize_Params
cuptiPmSamplingGetCounterDataSize 的参数。
- CUpti_PmSampling_SetConfig_Params
cuptiPmSamplingSetConfig 的参数。
- CUpti_PmSampling_Start_Params
cuptiPmSamplingStart 的参数。
- CUpti_PmSampling_Stop_Params
cuptiPmSamplingStop 的参数。
宏
- CUpti_PmSampling_CounterDataImage_Initialize_Params_STRUCT_SIZE
- CUpti_PmSampling_CounterData_GetSampleInfo_Params_STRUCT_SIZE
- CUpti_PmSampling_DecodeData_Params_STRUCT_SIZE
- CUpti_PmSampling_Disable_Params_STRUCT_SIZE
- CUpti_PmSampling_Enable_Params_STRUCT_SIZE
- CUpti_PmSampling_GetCounterAvailability_Params_STRUCT_SIZE
- CUpti_PmSampling_GetCounterDataInfo_Params_STRUCT_SIZE
- CUpti_PmSampling_GetCounterDataSize_Params_STRUCT_SIZE
- CUpti_PmSampling_SetConfig_Params_STRUCT_SIZE
- CUpti_PmSampling_Start_Params_STRUCT_SIZE
- CUpti_PmSampling_Stop_Params_STRUCT_SIZE
枚举
函数
- CUptiResult cuptiPmSamplingCounterDataGetSampleInfo(CUpti_PmSampling_CounterData_GetSampleInfo_Params *pParams)
获取给定样本索引的样本信息(开始和结束时间戳)。
- CUptiResult cuptiPmSamplingCounterDataImageInitialize(CUpti_PmSampling_CounterDataImage_Initialize_Params *pParams)
初始化计数器数据为 CUPTI 记录格式,用于存储指标数据。
- CUptiResult cuptiPmSamplingDecodeData(CUpti_PmSampling_DecodeData_Params *pParams)
将硬件缓冲区中存储的指标数据解码到计数器数据图像。
- CUptiResult cuptiPmSamplingDisable(CUpti_PmSampling_Disable_Params *pParams)
禁用 CUDA 设备上的 PM 采样并销毁 PM 采样对象。
- CUptiResult cuptiPmSamplingEnable(CUpti_PmSampling_Enable_Params *pParams)
创建 PM 采样对象并在 CUDA 设备上启用 PM 采样。
- CUptiResult cuptiPmSamplingGetCounterAvailability(CUpti_PmSampling_GetCounterAvailability_Params *pParams)
在缓冲区中查询计数器可用性信息,该信息可用于过滤主机上不可用的原始指标。
- CUptiResult cuptiPmSamplingGetCounterDataInfo(CUpti_PmSampling_GetCounterDataInfo_Params *pParams)
获取计数器数据信息,例如计数器数据图像中样本数、已填充样本数和已完成样本数。
- CUptiResult cuptiPmSamplingGetCounterDataSize(CUpti_PmSampling_GetCounterDataSize_Params *pParams)
查询将用于存储指标数据的计数器数据图像的大小。
- CUptiResult cuptiPmSamplingSetConfig(CUpti_PmSampling_SetConfig_Params *pParams)
设置 PM 采样的配置,例如采样间隔、硬件缓冲区中填充的最大样本数、触发模式以及具有指标收集调度信息的配置图像。
- CUptiResult cuptiPmSamplingStart(CUpti_PmSampling_Start_Params *pParams)
启动 PM 采样。
- CUptiResult cuptiPmSamplingStop(CUpti_PmSampling_Stop_Params *pParams)
停止 PM 采样。
类型定义
5.8.1. 宏
-
CUpti_PmSampling_CounterDataImage_Initialize_Params_STRUCT_SIZE
-
CUpti_PmSampling_CounterData_GetSampleInfo_Params_STRUCT_SIZE
-
CUpti_PmSampling_DecodeData_Params_STRUCT_SIZE
-
CUpti_PmSampling_Disable_Params_STRUCT_SIZE
-
CUpti_PmSampling_Enable_Params_STRUCT_SIZE
-
CUpti_PmSampling_GetCounterAvailability_Params_STRUCT_SIZE
-
CUpti_PmSampling_GetCounterDataInfo_Params_STRUCT_SIZE
-
CUpti_PmSampling_GetCounterDataSize_Params_STRUCT_SIZE
-
CUpti_PmSampling_SetConfig_Params_STRUCT_SIZE
-
CUpti_PmSampling_Start_Params_STRUCT_SIZE
-
CUpti_PmSampling_Stop_Params_STRUCT_SIZE
5.8.2. 枚举
-
enum CUpti_PmSampling_DecodeStopReason
值
-
enumerator CUPTI_PM_SAMPLING_DECODE_STOP_REASON_OTHER
-
enumerator CUPTI_PM_SAMPLING_DECODE_STOP_REASON_COUNTER_DATA_FULL
计数器数据图像已满。
-
enumerator CUPTI_PM_SAMPLING_DECODE_STOP_REASON_END_OF_RECORDS
硬件缓冲区中的所有记录都已解码。
-
enumerator CUPTI_PM_SAMPLING_DECODE_STOP_REASON_COUNT
-
enumerator CUPTI_PM_SAMPLING_DECODE_STOP_REASON_OTHER
-
enum CUpti_PmSampling_HardwareBuffer_AppendMode
值
-
enumerator CUPTI_PM_SAMPLING_HARDWARE_BUFFER_APPEND_MODE_KEEP_OLDEST
在硬件缓冲区中保留最旧的记录。如果硬件缓冲区即将被填满,CUPTI 将报告溢出错误。
-
enumerator CUPTI_PM_SAMPLING_HARDWARE_BUFFER_APPEND_MODE_KEEP_LATEST
在硬件缓冲区中保留最新的记录。注意:Turing GPU 架构不支持此模式。Ampere 及更高版本的 GPU 架构支持此模式。
-
enumerator CUPTI_PM_SAMPLING_HARDWARE_BUFFER_APPEND_MODE_KEEP_OLDEST
-
enum CUpti_PmSampling_TriggerMode
值
-
enumerator CUPTI_PM_SAMPLING_TRIGGER_MODE_GPU_SYSCLK_INTERVAL
触发器基于 SYSCLK 频率,请注意默认情况下 SYS 频率是可变的。采样间隔(在 CUpti_PmSampling_SetConfig_Params 结构中设置)以时钟为单位。
-
enumerator CUPTI_PM_SAMPLING_TRIGGER_MODE_GPU_TIME_INTERVAL
触发器基于固定频率源。采样间隔(在 CUpti_PmSampling_SetConfig_Params 结构中设置)以纳秒为单位。注意:Turing GPU 架构和 GA100 GPU 不支持此触发模式。Ampere GA10x 及更高版本的 GPU 架构支持此模式。
-
enumerator CUPTI_PM_SAMPLING_TRIGGER_MODE_COUNT
-
enumerator CUPTI_PM_SAMPLING_TRIGGER_MODE_GPU_SYSCLK_INTERVAL
5.8.3. 函数
-
CUptiResult cuptiPmSamplingCounterDataGetSampleInfo(CUpti_PmSampling_CounterData_GetSampleInfo_Params *pParams)
获取给定样本索引的样本信息(开始和结束时间戳)。
每个样本都通过开始和结束时间戳来区分。
- 参数
pParams – 指向 CUpti_PmSampling_CounterData_GetSampleInfo_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingCounterDataImageInitialize(CUpti_PmSampling_CounterDataImage_Initialize_Params *pParams)
初始化计数器数据为 CUPTI 记录格式,用于存储指标数据。
- 参数
pParams – 指向 CUpti_PmSampling_CounterDataImage_Initialize_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INVALID_OPERATION – 如果在未启用 PM 采样的情况下调用 PM 采样 CounterDataInitialize
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingDecodeData(CUpti_PmSampling_DecodeData_Params *pParams)
将硬件缓冲区中存储的指标数据解码到计数器数据图像。
- 参数
pParams – 指向 CUpti_PmSampling_DecodeData_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INVALID_OPERATION – 如果在未启用 PM 采样的情况下调用 PM 采样 DecodeData
CUPTI_ERROR_OUT_OF_MEMORY – 如果硬件缓冲区中存在记录溢出
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingDisable(CUpti_PmSampling_Disable_Params *pParams)
禁用 CUDA 设备上的 PM 采样并销毁 PM 采样对象。
- 参数
pParams – 指向 CUpti_PmSampling_Disable_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingEnable(CUpti_PmSampling_Enable_Params *pParams)
创建 PM 采样对象并在 CUDA 设备上启用 PM 采样。
- 参数
pParams – 指向 CUpti_PmSampling_Enable_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_OUT_OF_MEMORY – 如果在创建 PM 采样对象时内存分配失败
CUPTI_ERROR_INVALID_OPERATION – 如果设备上已启用 PM 采样
CUPTI_ERROR_INSUFFICIENT_PRIVILEGES – 如果用户没有执行操作的足够权限
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingGetCounterAvailability(CUpti_PmSampling_GetCounterAvailability_Params *pParams)
在缓冲区中查询计数器可用性信息,该信息可用于过滤主机上不可用的原始指标。
注意:如果指定的设备上任何分析或采样会话处于活动状态,则此 API 可能会失败。
- 参数
pParams – 指向 CUpti_PmSampling_GetCounterAvailability_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INSUFFICIENT_PRIVILEGES – 如果用户没有执行操作的足够权限
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingGetCounterDataInfo(CUpti_PmSampling_GetCounterDataInfo_Params *pParams)
获取计数器数据信息,例如计数器数据图像中样本数、已填充样本数和已完成样本数。
- 参数
pParams – 指向 CUpti_PmSampling_GetCounterDataInfo_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingGetCounterDataSize(CUpti_PmSampling_GetCounterDataSize_Params *pParams)
查询将用于存储指标数据的计数器数据图像的大小。
用户需要根据此 API 返回的大小为计数器数据图像分配内存。
- 参数
pParams – 指向 CUpti_PmSampling_GetCounterDataSize_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INVALID_OPERATION – 如果在未启用 PM 采样的情况下调用 PM 采样 GetCounterDataSize
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingSetConfig(CUpti_PmSampling_SetConfig_Params *pParams)
设置 PM 采样的配置,例如采样间隔、硬件缓冲区中填充的最大样本数、触发模式以及具有指标收集调度信息的配置图像。
- 参数
pParams – 指向 CUpti_PmSampling_SetConfig_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_NOT_SUPPORTED – 对于需要多次传递才能收集数据的配置图像
-
CUptiResult cuptiPmSamplingStart(CUpti_PmSampling_Start_Params *pParams)
启动 PM 采样。
GPU 将根据 CUpti_PmSampling_SetConfig_Params 中传递的触发类型和采样间隔定期开始收集指标数据。收集的数据将存储在硬件缓冲区中。
- 参数
pParams – 指向 CUpti_PmSampling_Start_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INVALID_OPERATION – 如果在未启用 PM 采样的情况下调用 PM 采样 Start,并且 PM 采样已启动
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
-
CUptiResult cuptiPmSamplingStop(CUpti_PmSampling_Stop_Params *pParams)
停止 PM 采样。
GPU 将停止收集指标数据。
- 参数
pParams – 指向 CUpti_PmSampling_Stop_Params 的指针
- 返回值
CUPTI_SUCCESS –
CUPTI_ERROR_INVALID_PARAMETER – 如果任何
pParams
无效CUPTI_ERROR_INVALID_OPERATION – 如果在未启用 PM 采样的情况下调用 PM 采样 Stop,并且 PM 采样已停止
CUPTI_ERROR_UNKNOWN – 对于任何内部错误
5.8.4. 类型定义
-
typedef struct CUpti_PmSampling_Object CUpti_PmSampling_Object