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

时间:2016-02-23 02:19:19

标签: nvidia profiler nsight

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

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

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

我终于找到了在Visual Studio 2013社区中配置我的第一个程序的方法。上述说明(从CUDA运行时项目开始)修改如下:

  1. VC ++目录 - >一般 - >包含目录:$(NVTOOLSEXT_PATH)\ include
  2. CUDA C / C ++ - >常见 - >其他包含目录:$(NVTOOLSEXT_PATH)\ include
  3. 链接器 - >一般 - >其他库目录:$(NVTOOLSEXT_PATH)\ lib \ $(平台)
  4. 链接器 - >输入 - >其他依赖项:nvToolsExt64_1.lib
  5. 复制位于$(NVTOOLSEXT_PATH)\ bin \ $(平台)中的文件nvToolsExt64_1.dll并将其粘贴到项目目录MyProject / x64 / debug
  6. 我尝试在Nsight Elcipse Edition 7.5中复制Visual Studio步骤,但我无法将我的NVTX函数(特别是“nvtxRangeStartA”和nvtxRangeEnd)与正确的库(libnvToolsExt.so)链接。

    我在Nsight Eclipse 7.5中为Fedora Server 21编写了它。

    我的代码是:

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

    任何人都可以帮我吗?

    我认为我必须做什么?

    Nsight错误是:

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

1 个答案:

答案 0 :(得分:1)

这是编译器或链接器错误。由于你没有提到关于没有找到“nvToolsExt.h”的错误,我猜你的包含设置是正确的并且它正在获取头文件。

这留下了最可能的原因是链接失败。您需要将库链接为-lnvToolsExt,将库路径链接为-L {/ usr / local / cuda / lib64}

我列出了一个特定于我的设置的linux路径。您的CUDA工具包安装在哪里,但您确实需要验证正确的库。正确的库是libnvToolsExt.so,它符号链接几次。

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

请使用构建控制台中的任何其他错误编辑您的帖子。