如何从NVidia Visual Profiler的nvprof输出中获取定时值



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

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

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

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

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

您可以使用correlationId字段将API调用与内核/内存副本/内存集关联起来。

最新更新