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

Posted

技术标签:

【中文标题】在 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?在 Nsight Eclipse 7.5 中进行分析以使用 NVTX 时,正确的 CUDA 项目配置是什么? 【发布时间】:2016-06-04 16:54:35 【问题描述】:

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

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

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

我终于找到了在 Visual Studio 2013 社区中分析我的第一个程序的方法。上面的指令(从一个 CUDA 运行时项目开始)修改如下:

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

我尝试在 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'

【问题讨论】:

我想知道我是否是世界上唯一一个尝试在 Nsight Eclipse 中使用 NVTX... 我是。我的经验是这是一个非常手动的过程。 【参考方案1】:

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

剩下的最可能的原因是链接失败。您需要将库链接为 -lnvToolsExt 并将库路径链接为 -L/usr/local/cuda/lib64

我列出了一个特定于我的设置的 linux 路径。安装 CUDA Toolkit 的地方是您的,但您确实需要验证其中是否存在正确的库。正确的库是 libnvToolsExt.so,它被符号链接了几次。

转到 Nsight 中的项目设置>>Properties for Project>>Build>>Settings>>Tool Settings>>NVCC Linker>>Libraries 库(-l)应该有 nvToolsExt 库搜索路径(-L) 文件系统路径

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

【讨论】:

以上是关于在 Nsight Eclipse 7.5 中进行分析以使用 NVTX 时,正确的 CUDA 项目配置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在现有Eclipse中安装CUDA NSight?

Nsight Eclipse not found/CUDA11.1安装问题

使用 Eclipse Nsight 编译 CUDA + Intel MKL

将正在运行的 OpenGL 附加到 NSight 以进行图形调试

使用单个 GPU 进行 Nsight 调试

在 VS2010 中使用 Nvidia NSight 进行 CUDA 性能分析 - 时间线上的片段