2

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

4

1 回答 1

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 代码,您可能会看到编译器反转了条件。

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

在此处输入图像描述

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

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

于 2013-02-27T20:36:43.857 回答