我写了一个 CUDA 应用程序。我的应用程序调用内核大约 40 次。在对其进行分析之后,在每个内核完成它的执行之后,都会有一个cudaMemset()
. 而这些 cudaMemsets 正在消耗大量时间。cudaMemset
但是,我的文件中没有任何.cu
内容。CUDA API 是否在内部调用cudaMemset
?还有什么方法可以知道 CUDA 分析器中的行号吗?
问问题
215 次
1 回答
1
Nsight Visual Studio Edition Trace Activity 支持在所有 CUDA Runtime 和 CUDA Driver API 调用上捕获调用堆栈。
为 CUDA 运行时 API 调用启用调用堆栈跟踪
- 在Nsight菜单中执行Start Performance Analysis。(Nsight 中的新分析活动< 3)
- 在 Activity Editor 中展开 Trace Settings 部分和 CUDA 部分。
- 在Runtime API Trace旁边的 CUDA 部分中,将Call Stack Trace设置为Always。
- 运行分析活动。
查看 CUDA 运行时 API 调用的调用堆栈跟踪
- 在捕获的分析报告中,单击左上角的报告页面选择器并选择页面CUDA Runtime API Calls。
- 在表中单击感兴趣的 API 调用。
- 在报告页面左下方的相关窗格树中,单击Stack Trace。
上述过程可以对其他 API 域进行。相关窗格还可用于确定生成内核启动或内存副本的 API 调用和调用堆栈。
于 2013-02-14T19:09:55.893 回答