我使用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标记的数据。它的形式与其他表稍有不同,因为它没有start
和end
字段。相反,标记的开始和结束是2个条目(结束具有name=0
)
您可以使用correlationId
字段将API调用与内核/内存副本/内存集关联起来。