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

时间:2014-10-01 15:40:40

标签: xml cuda profiling nvvp text-decoding

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

您可以使用correlationId字段将API调用与内核/ memcopies / memset相关联。