0

我写了一个 CUDA 应用程序。我的应用程序调用内核大约 40 次。在对其进行分析之后,在每个内核完成它的执行之后,都会有一个cudaMemset(). 而这些 cudaMemsets 正在消耗大量时间。cudaMemset但是,我的文件中没有任何.cu内容。CUDA API 是否在内部调用cudaMemset?还有什么方法可以知道 CUDA 分析器中的行号吗?

4

1 回答 1

1

Nsight Visual Studio Edition Trace Activity 支持在所有 CUDA Runtime 和 CUDA Driver API 调用上捕获调用堆栈。

为 CUDA 运行时 API 调用启用调用堆栈跟踪

  1. Nsight菜单中执行Start Performance Analysis。(Nsight 中的新分析活动< 3)
  2. 在 Activity Editor 中展开 Trace Settings 部分和 CUDA 部分。
  3. 在Runtime API Trace旁边的 CUDA 部分中,将Call Stack Trace设置为Always
  4. 运行分析活动。

查看 CUDA 运行时 API 调用的调用堆栈跟踪

  1. 在捕获的分析报告中,单击左上角的报告页面选择器并选择页面CUDA Runtime API Calls
  2. 在表中单击感兴趣的 API 调用。
  3. 在报告页面左下方的相关窗格树中,单击Stack Trace

上述过程可以对其他 API 域进行。相关窗格还可用于确定生成内核启动或内存副本的 API 调用和调用堆栈。

Nsight Visual Studio Edition 3.0 RC1 分析报告显示调用堆栈跟踪

于 2013-02-14T19:09:55.893 回答