首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPU计算SDK中的cutil链接

GPU计算SDK中的cutil链接
EN

Stack Overflow用户
提问于 2012-05-25 03:44:44
回答 2查看 2.7K关注 0票数 0

我一直试图链接到NVIDIA发布的GPU计算SDK的cutil.h中的函数。

目前,我只是试图编译这段简单的代码:

代码语言:javascript
复制
#include <iostream>
#include <cuda.h>
#include <cutil.h>

using namespace std;

int main(){
    unsigned int time_total;    
    cutCreateTimer(&time_total);
    return 0;
}

使用以下命令:

代码语言:javascript
复制
nvcc -I/home/sj755/NVIDIA_GPU_Computing_SDK/C/common/inc/ -L/home/sj755/NVIDIA_GPU_Computing_SDK/C/lib/libcutil_x86_64.a cutiltest.cu

只会得到以下错误:

代码语言:javascript
复制
/tmp/tmpxft_000077cc_00000000-13_cutiltest.o: In function `main':
tmpxft_000077cc_00000000-1_cutiltest.cudafe1.cpp:(.text+0x10): undefined reference to 

`cutCreateTimer'

collect2: ld returned 1 exit status

如果我要添加标志,ld也找不到-lcutil。有一个静态库,我应该链接到,但由于某种原因,这是行不通的。以下是我尝试过的:

  1. 我已经更改了我的.bashrc文件,以便LD_LIBRARY_PATH包含到静态库的路径 ##########< CULA >导出CULA_ROOT=/usr/local/cula 导出CULA_INC_PATH=$CULA_ROOT/include 导出CULA_BIN_PATH_32=$CULA_ROOT/bin 导出CULA_BIN_PATH_64=$CULA_ROOT/bin64 导出CULA_LIB_PATH_32=$CULA_ROOT/lib 导出CULA_LIB_PATH_64=$CULA_ROOT/LIB 64 ##########< CUDA >导出路径=$PATH:/usr/local/cuda/bin 导出LD_LIBRARY_PATH=:/usr/local/cuda/lib64 64 导出LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CULA_LIB_PATH_64 导出LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/libnvvp/ 导出CUDA_SDK_ROOT_DIR=/home/sj755/NVIDIA_GPU_Computing_SDK/C 导出LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_SDK_ROOT_DIR/lib
  2. 我还尝试过将libcutil_x86_64.a重命名为libcutil.a,但仍然没有。
  3. 尝试提取存档,创建共享对象文件,并链接到它: ar -x libcutil_x86_64.a gcc -I /usr/include/GL/ -L /usr/include/GL/ -lglut -lGL -lGLU -lX11 -lXmu -lXi -lm -lpthread -shared *.cpp.o -o libcutil.so nvcc /home/sj755/NVIDIA_GPU_Computing_SDK/C/common/inc/ -lcutil -I -L -L cutiltest.cu

只得到以下/usr/bin/ld: cannot find -lcutil

我在这里忘记了什么步骤?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-25 06:04:11

您的编译语句不正确。它应该是这样的:

代码语言:javascript
复制
nvcc -I$SDKROOT/C/common/inc -L$SDKROOT/C/lib cutiltest.cc -lcutil_x86_64

SDKROOT保存SDK的根路径,它看起来是

代码语言:javascript
复制
/home/sj755/NVIDIA_GPU_Computing_SDK

在你的案子里。这里要注意的关键是,库必须在需要它的代码和对象之后以名称形式传递为-l选项。在OS上使用代码片段的一个具体示例:

代码语言:javascript
复制
$ cat cutiltest.cc 

#include <iostream>
#include <cuda.h>
#include <cutil.h>

using namespace std;

int main(){
    unsigned int time_total;    
    cutCreateTimer(&time_total);
    return 0;
}


$ nvcc -I/Developer/GPU\ Computing/C/common/inc -L /Developer/GPU\ Computing/C/lib -o cutiltest cutiltest.cc -lcutil_i386


$ ls -l cutiltest
-rwxr-xr-x  1 talonmies  talonmies  117548 May 25 07:57 cutiltest

但作为最后一点,您确实应该重新考虑使用SDK cutils库的选择。它只适合与SDK示例一起使用。它不是CUDA的一部分,它没有文档,它不能保证工作或不包含bug,也不能保证从一个SDK版本到另一个SDK版本之间是一致的(甚至是现在的)。

票数 3
EN

Stack Overflow用户

发布于 2012-05-25 05:30:32

这不仅仅是你的问题。您是否试图像使用共享库那样与cutil链接?这个解决方案是在NVIDIA开发公司。区域论坛上发布的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10748219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档