CUDA:Nsight VS2010 profile __device__ 函数

Posted

技术标签:

【中文标题】CUDA:Nsight VS2010 profile __device__ 函数【英文标题】:CUDA: Nsight VS2010 profile __device__ function 【发布时间】:2013-02-11 14:54:25 【问题描述】:

我想知道如何在 Visual Studio 2010 上使用 Nsight 2.2 分析 __global__ 函数内的 __device__ 函数。我需要知道哪个函数消耗大量资源和时间。我在 CC 2.0 上有 CUDA 5.0。

【问题讨论】:

【参考方案1】:

Nsight Visual Studio Edition 3.0 CUDA Profiler 引入了源相关实验。 Profile CUDA Activity 支持以下源级实验:

指令计数 - 收集内核中每个用户指令的已执行指令、已执行线程指令、活动线程直方图、预测线程直方图。不收集有关系统调用 (printf) 的信息。

发散分支 - 收集已采用的分支、未采用的分支以及流控制指令的发散计数。

内存事务 - 为全局、本地和共享内存指令收集事务计数、理想事务计数器和请求字节。

此信息是根据 SASS 指令收集的。如果内核使用 -lineinfo (--generate-line-info) 编译,则信息可以汇总到 PTX 和高级源代码。由于此数据是从 SASS 汇总的,因此某些统计数据对于高级来源可能并不直观。例如,一个分支统计数据可能显示 100% 未采用,而您预计 100% 已采用。如果您查看 SASS 代码,您可能会看到编译器反转了条件。

还请注意,在优化构建时,编译器有时无法维护行表信息。

此时硬件性能计数器和计时仅在内核级别可用。

设备代码时序可以使用 cmets 中提到的 clock() 和 clock64() 来完成。这是一种非常先进的技术,需要理解 SASS 和解释与 SM warp 调度器相关的结果的能力。

【讨论】:

谢谢。看起来很难但很有趣。你知道 Nsight 3.0 什么时候发布吗?

以上是关于CUDA:Nsight VS2010 profile __device__ 函数的主要内容,如果未能解决你的问题,请参考以下文章

在 VS2010 中使用 Nvidia NSight 进行 CUDA 性能分析 - 时间线上的片段

在导出DLL的非启动项目中使用Nsight调试CUDA代码

Nvidia Nsight - 如何连接到本地主机?

使用并行 nsight 2.2 创建新的 CUDA 项目

cuda-gdb 在 Linux 上的 nsight 中不起作用

Nsight Eclipse not found/CUDA11.1安装问题