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 的参数。

枚举

函数

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
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 架构支持此模式。

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

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