在 Nsight Eclipse 7.5 中进行分析以使用 NVTX 时,正确的 CUDA 项目配置是什么?

What is the correct CUDA project configuration when profiling in Nsight Eclipse 7.5 in order to use NVTX?

我正在尝试分析一个 CUDA 程序,因为我想通过使用 NVTX 工具验证顺序性能并将其与相应的异构性能进行比较。

我最近发现了这篇文章,并认为我可以使用正确的参数自行在 Visual Studio 中配置我的项目:

http://http.developer.nvidia.com/NsightVisualStudio/2.2/Documentation/UserGuide/HTML/Content/NVTX_Library.htm

我终于找到了在 Visual Studio 2013 社区中介绍我的第一个程序的方法。上述指令(从CUDA Runtime Project开始)修改如下:

  1. VC++ 目录 -> 常规 -> 包含目录:$(NVTOOLSEXT_PATH)\include
  2. CUDA C/C++ -> 通用 -> 附加包含目录:$(NVTOOLSEXT_PATH)\include
  3. 链接器 -> 常规 -> 其他库目录:$(NVTOOLSEXT_PATH)\lib\$(Platform)
  4. 链接器 -> 输入 -> 附加依赖项:nvToolsExt64_1.lib
  5. 复制位于$(NVTOOLSEXT_PATH)\bin\$(Platform)的文件nvToolsExt64_1.dll并粘贴到你的项目目录MyProject/x64/debug

我试图在 Nsight Elcipse Edition 7.5 中复制 Visual Studio 步骤,但我无法 link 使用正确的库 (link 我的 NVTX 函数(特别是 "nvtxRangeStartA" 和 nvtxRangeEnd) 50=]).

我在 Fedora Server 21 的 Nsight Eclipse 7.5 中编写了代码。

我的代码是:

#include "nvToolsExt.h"
...
nvtxRangeId_t t;
t = nvtxRangeStart("MyFunction_timing");
MyFunction();
nvtxRangeEnd(t);

有人能帮我吗?

我想我必须做什么?

Nsight 错误是:

undefined reference to 'nvtxRangeEnd'
undefined reference to 'nvtxRangeStartA'

那是编译器错误或 linker 错误。既然你没有提到找不到 "nvToolsExt.h" 的错误,我猜你的 include 设置是正确的,它正在获取头文件。

留下最可能的原因是 linking 失败。您需要 link 库作为 -lnvToolsExt 和库路径作为 -L{/usr/local/cuda/lib64}

我列出了一个 linux 路径,它是我的设置所特有的。你的是安装 CUDA 工具包的地方,但你真的需要验证那里有正确的库。正确的库是 libnvToolsExt.so,它被 symlinked 了几次。

转到 Nsight 中的项目设置>>{Project} 的属性>>构建>>设置>>工具设置>>NVCC 链接器>>库 图书馆(-l)应该有 nvToolsExt 库搜索路径(-L) {文件系统路径}

请编辑您的 post 以及来自构建控制台的任何其他错误。