6.114. CUpti_PCSamplingData

struct CUpti_PCSamplingData

收集的 PC 采样数据。

公共成员

size_t size

[w] 数据结构的大小。

CUPTI 客户端应设置结构的大小。CUPTI 将使用它来检查结构中可用的字段。用于保持向后兼容性。

size_t collectNumPcs

[w] 要收集的 PC 数量

uint64_t totalSamples

[r] 跨所有 PC 收集的样本数量。

它包括用户模块的样本、非用户内核的样本和丢弃的样本。它包括所有未选择的停顿原因的计数。CUPTI 不为非用户内核提供 PC 记录。CUPTI 不为所有选定的停顿原因指标计数均为零的指令提供 PC 记录。

uint64_t droppedSamples

[r] 由于背压/溢出,硬件丢弃的样本数量。

size_t totalNumPcs

[r] 收集的 PC 数量

size_t remainingNumPcs

[r] 可用于收集的 PC 数量

uint64_t rangeId

[r] 每个范围的唯一标识符。

在多个缓冲区中的多个范围收集的数据可以使用范围 ID 进行标识。

CUpti_PCSamplingPCData *pPcData

[r] 分析的 PC 数据。此数据结构应具有足够的内存来收集 collectNumPcs 中提到的 PC 数量

collectNumPcs

uint64_t nonUsrKernelsTotalSamples

[r] 跨所有非用户内核 PC 收集的样本数量。

它包括非用户内核的样本。它也包括所有未选择的停顿原因的计数。CUPTI 不为非用户内核提供 PC 记录。

uint8_t hardwareBufferFull

[r] 硬件缓冲区的状态。

当硬件缓冲区满时,CUPTI 返回错误代码 CUPTI_ERROR_OUT_OF_MEMORY。当硬件缓冲区满时,用户将获得 pc 数据为 0。为了缓解此问题,可以尝试以下一个或多个选项

  1. 使用属性 CUPTI_PC_SAMPLING_CONFIGURATION_ATTR_TYPE_HARDWARE_BUFFER_SIZE 增加硬件缓冲区大小

  2. 使用属性 CUPTI_PC_SAMPLING_CONFIGURATION_ATTR_TYPE_WORKER_THREAD_PERIODIC_SLEEP_SPAN 减小线程休眠跨度

  3. 使用属性 CUPTI_PC_SAMPLING_CONFIGURATION_ATTR_TYPE_SAMPLING_PERIOD 降低采样频率