我正在尝试分析CUDA程序,因为我想通过使用NVTX工具验证顺序性能,并将其与相应的异构性能进行比较。
我最近发现了这篇文章,并认为我可以使用正确的参数在Visual Studio中配置我的项目:
我终于找到了在Visual Studio 2013社区中配置我的第一个程序的方法。上述说明(从CUDA运行时项目开始)修改如下:
我尝试在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'
答案 0 :(得分:1)
这是编译器或链接器错误。由于你没有提到关于没有找到“nvToolsExt.h”的错误,我猜你的包含设置是正确的并且它正在获取头文件。
这留下了最可能的原因是链接失败。您需要将库链接为-lnvToolsExt,将库路径链接为-L {/ usr / local / cuda / lib64}
我列出了一个特定于我的设置的linux路径。您的CUDA工具包安装在哪里,但您确实需要验证正确的库。正确的库是libnvToolsExt.so,它符号链接几次。
转到Nsight中的项目设置>> {Project}>>构建>>设置>>工具设置>> NVCC链接器>>库的属性 库(-l)应该有nvToolsExt 库搜索路径(-L){文件系统路径}
请使用构建控制台中的任何其他错误编辑您的帖子。