CUDA:Nsight VS2010 profile __device__函数

时间:2013-02-26 08:15:58

标签: visual-c++ cuda profiling nsight

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

1 个答案:

答案 0 :(得分:4)

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

  • 指令计数 - 收集内核中每条用户指令执行的指令,执行的线程指令,活动线程直方图,谓词线程直方图。不收集有关系统调用(printf)的信息。

  • Divergent Branch - 收集分支,分支未被采用,以及流量控制指令的分歧计数。

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

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

请注意,在优化版本中,编译器有时无法维护行表信息。

enter image description here

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

设备代码时序可以使用clock()和clock64()完成,如注释中所述。这是一种非常先进的技术,需要能够理解SASS并解释与SM warp调度程序相关的结果。