【问题标题】:How to observe CUDA events and metrics for a subsection of an executable (e.g. only during a kernel execution time)?如何观察可执行文件子部分的 CUDA 事件和指标(例如,仅在内核执行期间)?
【发布时间】:2012-10-05 19:17:08
【问题描述】:

我熟悉使用 nvprof 访问基准的事件和指标,例如,

nvprof --system-profiling on --print-gpu-trace -o (file name) --events inst_issued1 ./benchmarkname

system-profiling on --print-gpu-trace -o (filename)    

命令为开始时间、内核结束时间、电源、温度提供时间戳,并将信息保存在 nvvp 文件中,以便我们可以在可视化分析器中查看它。这使我们能够看到代码的任何部分发生了什么,特别是在特定内核运行时。我的问题是——

有没有办法隔离仅在基准运行的一部分中计数的事件,例如在内核执行期间?在上面的命令中,

--events inst_issued1    

只给出整个可执行文件的指令。谢谢!

【问题讨论】:

  • 应该说“命令为内核*开始时间、内核结束时间提供时间戳......”
  • 您可以编辑自己的问题,而不是像这样发表评论。

标签: cuda profiling nvvp nvprof


【解决方案1】:

您可能想阅读profiler documentation

您可以在可执行文件中打开和关闭分析。用于此的 cuda 运行时 API 是:

cudaProfilerStart() 
cudaProfilerStop() 

因此,如果您只想收集特定内核的配置文件信息,您可以这样做:

#include <cuda_profiler_api.h>
...

cudaProfilerStart();
myKernel<<<...>>>(...);
cudaProfilerStop();

并摘自文档:

在使用启动和停止功能时,您还需要指示分析工具在应用程序启动时禁用分析。对于 nvprof,您可以使用 --profile-from-start off 标志执行此操作。对于 Visual Profiler,您可以在设置视图中使用 Start execution with profiling enabled 复选框。

同样从the documentationnvprof,您可以使用命令行开关将事件/指标制表限制为单个内核:

 --kernels <kernel name>

文档提供了额外的使用可能性。

【讨论】:

  • 感谢@Robert Crovella!另外,我一直在研究这个问题,并注意到您可以在不调用 --kernel 的情况下获取每个内核的内核级别信息。我会做出另一个答案。
  • 你能告诉我费米架构的指标和事件列表吗?从我见过的每一个 NVIDIA GPU Profiling 问题来看,你是第一个回答的人! stackoverflow.com/questions/32994604/…
  • 你实际上可以通过运行nvprof --query-metrics从硬件本身获得这个(也许你应该阅读profiler manual??)你也可以这样做nvprof --query-events(我应该提到探查器有命令line help nvprof --help?) 无论如何,在分析器文档的末尾,有一个按计算架构细分的指标列表。费米是cc2.0。所以看here
  • 我不知道相应的已发布事件列表(可能在某个地方有一个,我只是不知道它在哪里),所以我在 Fermi 设备上运行了该命令并发布了它here给你。
  • 你最好的!谢谢!
【解决方案2】:

进一步研究后发现,所有内核(不使用--kernels 并专门指定它们)也通过使用

nvprof --events <event names> --metrics <metric names> ./<cuda benchmark>   

实际上,它给出的输出形式为

"Device","Kernel","Invocations","Event Name","Min","Max","Avg"

如果在基准测试中多次调用内核,则可以查看这些内核运行所需事件的 Min、Max、Avg。显然,Cuda 7.5 Profiler 上的 --kernels 选项允许指定每个内核的每次运行。

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2021-05-15
    • 2015-01-27
    • 1970-01-01
    相关资源
    最近更新 更多