每次使用nvprof调用CUDA内核函数时,如何收集事件值?

时间:2018-06-29 11:35:35

标签: cuda nvprof

使用nvprof分析CUDA程序。

我已在How to collect the event value every time the kernel function been invocated?中描述了问题

我再次发布问题。

使用nvprof --events tex0_cache_sector_queries --replay-mode kernel ./matrixMul

nvprof --events tex0_cache_sector_queries --replay-mode application ./matrixMul

我们可以收集事件值结果:

==40013== Profiling application: ./matrixMul
==40013== Profiling result:
==40013== Event result:
"Device","Kernel","Invocations","Event Name","Min","Max","Avg","Total"
"Tesla K80 (0)","void matrixMulCUDA<int=32>(float*, float*, float*, int, int)",301,"tex0_cache_sector_queries",0,30,24,7224

以上结果为摘要。内核函数matrixMulCUDA调用 tex0_cache_sector_queries 的301次调用值。它只是具有301次调用的 min,max,avg,total 值,即汇总结果。

我想收集每次调用matrixMulCUDA以来的完整301次tex0_cache_sector_queries值。另一方面,每次调用内核函数matrixMulCUDA时,我都希望收集tex0_cache_sector_queries事件值。如何收集?

1 个答案:

答案 0 :(得分:1)

1运行:

nvprof --pc-sampling-period 31 --print-gpu-trace --replay-mode application \
--export-profile application.prof --events tex0_cache_sector_queries ./matrixMul

2将 application.prof 导入可视分析器:

visual profiler result

3按照图片上的索引获取每个内核函数的事件值的每次调用。

4 --print-gpu-trace参数:打印单个内核调用(包括CUDA memcpy / memset),并按时间顺序对其进行排序。在事件/指标分析模式下,每次内核调用的show event / metrics都可以解决此问题。 print-gpu-trace