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



使用 nvproof 分析 CUDA 程序。

我已经在如何每次调用内核函数时收集事件值中描述了这个问题?

我再次发布问题。

有了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 次调用的最小值、最大值、平均值、总值,这是一个汇总结果。

我想收集完整的 301 次tex0_cache_sector_queries值,这些值来自每次调用矩阵 MulCUDA 时。另一方面,每次调用内核函数矩阵 MulCUDA 时,我都想收集tex0_cache_sector_queries事件值。如何收集?

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:

可视探查器结果

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

4--print-gpu-trace参数:打印单个内核调用(包括 CUDA memcpy/memset(并按时间顺序对它们进行排序。在事件/指标分析模式下,显示每个内核调用的事件/指标可以解决此问题。打印-GPU 跟踪

相关内容

  • 没有找到相关文章

最新更新