0

请参见下图 Nvidia Nsight 2.2 分析会话(Win7、MSVC++ 10 Pro、CUDA 4.2、GTX 670)。

Nsight时间线

在第一个主机线程 (26.8%) 上,我从 CUDA API 获取函数调用名称。是否可以从主机进程中的第二个线程 (13.6%) 正在执行的用户定义函数中获取函数调用名称?如果是这样,怎么做?

4

2 回答 2

1

Paul,默认情况下不支持此功能。

使用 NVIDIA 工具扩展 (NVTX) 库,您可以手动检测您的代码。此库安装在目录 C:\Program Files\NVIDIA GPU Computing Toolkit\nvToolsExt 中,带有 Nsight Visual Studio Edition(所有版本)或 CUDA Toolkit 5.0 RC。5.0 RC 中的 Visual Profiler 支持 NVTX。

该库附带两个示例,向您展示如何使用该库。NvtxMultithread.cpp 示例提供了一个帮助程序库。感兴趣的功能是

nvtxRangePushA
nvtxRangePop

或者,如果您使用的是 C++,则帮助程序库具有可用作作用域的帮助程序

nvtx::ScopedRange range(__FUNCTION__)

在每个函数的顶部。

可以通过使用 cl.exe 选项 /Gh 和 /GH 来自动执行此操作,但这需要编写程序集。

于 2012-08-01T20:47:04.810 回答
0

此演示文稿可能会有所帮助。Parallel Nsight:分析和优化大规模并行应用程序

于 2012-07-25T06:26:45.973 回答