在 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 项目配置是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Nsight Eclipse not found/CUDA11.1安装问题
使用 Eclipse Nsight 编译 CUDA + Intel MKL