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 性能分析 - 时间线上的片段