1

我正在使用 nvprof 来分析某些东西(包括 CPU 工作和 GPU 工作,即我使用 nvprof 标记等),并且我得到了 nvprof 生成的二进制文件。我可以将这些导入到 NVVP(NVidia Visual Profiler;Linux 版本)中,并且稍加努力也可以将其保存到 XML 中。

但是... XML 不包含有关我的各种 CPU 何时执行的计时数据。它提到了他们的存在,但没有更多。此外,XML 的末尾有这个二进制 blob,可能是 Base64 编码或其他东西,位于 PDM 标记内。我不清楚那里是否有任何帮助。

4

1 回答 1

5

这是一个相当古老的问题,但也许有人会发现答案很有用。

nvprof输出文件实际上是 SQLite3 数据库,您可以使用独立的 sqlite3 程序或以编程方式打开它。时间线信息在这些表中(所有时间戳都以纳秒为单位):

  • CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL- 关于内核的数据
  • CUPTI_ACTIVITY_KIND_MEMCPY- 关于内存副本的数据(非 P2P)
  • CUPTI_ACTIVITY_KIND_MEMCPY2- 关于 P2P 内存副本的数据
  • CUPTI_ACTIVITY_KIND_MEMSET- 关于 memset 的数据
  • CUPTI_ACTIVITY_KIND_RUNTIME- 有关 CUDA 运行时 API 调用的数据
  • CUPTI_ACTIVITY_KIND_DRIVER- 有关 CUDA 驱动程序 API 调用的数据
  • CUPTI_ACTIVITY_KIND_MARKER- 有关 NVTX 标记的数据。它的形式与其他表略有不同,因为它没有startend字段。相反,标记的开始和结束是 2 个条目(结束有name=0

correlationId您可以使用字段将 API 调用与 kernels/memcopies/memset 关联起来。

于 2016-11-23T16:19:34.227 回答