如何从 nvprof 或 NVidia Visual Profiler 的输出中获取计时值?

ein*_*ica 1 xml profiling cuda text-decoding nvvp

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

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

小智 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 调用与内核/内存副本/内存集相关联。