【问题标题】:My CUDA nvprof 'API Trace' and 'GPU Trace' are not synchronized - what to do?我的 CUDA nvprof 'API Trace' 和 'GPU Trace' 不同步 - 怎么办?
【发布时间】:2015-06-15 09:45:33
【问题描述】:

我正在使用 CUDA 7.0 分析器 nvprof 来分析一些进行 CUDA 调用的进程:

$ nvprof -o out.nvprof /path/to/my/app

稍后,我生成两个跟踪:“API 跟踪”(主机 CPU 上发生的情况,例如 CUDA 运行时调用和您标记的范围)和“GPU 跟踪”(内核执行、memset、H2D、D2H 等) ):

$ nvprof -i out.nvprof --print-api-trace --csv 2>&1 | tail -n +2 > api-trace.csv
$ nvprof -i out.nvprof --print-gpu-trace --csv 2>&1 | tail -n +2 > gpu-trace.csv

每个跟踪中的每条记录都有一个时间戳(或开始和结束时间)。问题是,这两个 trace 中的时间值 0 并不相同:GPU trace time-0 点似乎表示相关进程触发的 GPU 上的第一个操作开始执行的时间,而 API trace 的 time-0 点似乎是流程执行的开始,或者某个时候。

我还注意到,当我使用 nvvp 并导入 out.nvprof 时,值被更正了,也就是说,第一个 GPU 操作的开始时间不是 0,而是更真实的值。

如何获得两条迹线之间的正确偏移量?

【问题讨论】:

  • 如果您同时要求两者,我看不到任何“偏移”。 nvprof --print-gpu-trace --print-api-trace ./my_app你在做不同的事情吗?你看到了什么不同的东西吗?是否有某些原因您不能同时向 nvprof 要求两者? Here 是我所看到的一个例子。请注意,我已经标记了几行以与 > 进行比较
  • @RobertCrovella:编辑澄清。
  • nvprof -i out.nvprof --print-gpu-trace --print-api-trace --csv 2>&1 | tail -n +2 > comb-trace.csv怎么样
  • @RobertCrovella:嗯。什么都知道。请回答一下?

标签: cuda profiling trace data-synchronization nvprof


【解决方案1】:

the nvprof documentation 中可能不明显,但在从nvprof 请求输出时,可以同时指定--print-gpu-trace--print-api-trace,无论您是在分析应用程序还是从先前捕获的分析器输出中提取信息文件。

如果您正在分析应用程序,以下内容应为 API 活动和 GPU 活动生成“协调”时间线:

nvprof --print-gpu-trace --print-api-trace ./my_app

您可以使用--log-file option 保存输出。

同样,如果您要从之前捕获的输出文件中提取输出(与日志文件不同),您可以执行以下操作:

nvprof -i profiler_out_file --print-gpu-trace --print-api-trace ...

其中profiler_out_file 应该是您之前使用the nvprof -o ... option 保存的文件的名称。

使用相同的命令打印两条轨迹对于两条(组合的)时间线在同一时间点开始是必不可少的;如果您发出两个命令,每个命令都打印另一个跟踪,那么它们可能不会因此“协调”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多