首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu 16.04,Nvidia toolkit 8.0 RC,darknet编译错误:预期为";“

Ubuntu 16.04,Nvidia toolkit 8.0 RC,darknet编译错误:预期为";“
EN

Stack Overflow用户
提问于 2016-09-02 16:28:14
回答 3查看 9.4K关注 0票数 7

我正在支持GPU的Ubuntu16.04上编译Darknet。Nvidial工具包8.0 RC版

然后我就会遇到错误:

代码语言:javascript
复制
nvcc --gpu-architecture=compute_52 --gpu-code=compute_52  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
/usr/local/cuda/include/surface_functions.h(134): error: expected a ";"

/usr/local/cuda/include/surface_functions.h(135): error: expected a ";"

/usr/local/cuda/include/surface_functions.h(136): error: expected a ";"

/usr/local/cuda/include/surface_functions.h在错误行的内容如下:

代码语言:javascript
复制
template<> __device__ __cudart_builtin__ char surf1Dread(surface<void, cudaSurfaceType1D> surf, int x, enum cudaSurfaceBoundaryMode mode) asm("__surf1Dread_char") ;

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2017-09-08 14:30:32

因此,当您的环境使用不同版本的nvcc二进制文件并且cuda在编译过程中包含文件时,就会发生这种情况。

Darknet使用/usr/local/cuda/ include /作为其包含路径,但在执行nvcc二进制文件时依赖于您的路径。它可能属于您系统中的另一个cuda安装。

为了避免这种情况,强制shell在/usr/local/cuda/bin/nvcc中搜索nvcc。

这可以通过在Makefile中破解nvcc路径来实现:

NVCC=nvcc 替换为 NVCC=/usr/local/cuda/bin/nvcc

或者修改make命令的PATH变量(更简单且与会话相关)

代码语言:javascript
复制
PATH=/usr/local/cuda/bin:$PATH make
票数 15
EN

Stack Overflow用户

发布于 2016-12-23 03:03:16

如果您已经安装了多个版本的CUDA并且需要它们(像我一样),我建议在您的(BASH) RC中添加以下内容:

代码语言:javascript
复制
# DARKNET
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

获取你的RC ('.~/.bashrc')和编译工作!

票数 11
EN

Stack Overflow用户

发布于 2016-09-11 14:33:09

此错误是由于nvcc 7.5版造成的

看起来通过deb文件安装的Cuda工具包8.0 RC没有安装nvcc版本8,我已经通过cuda_8.0.27_linux.run重新安装了cuda,现在可以使用了

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

https://stackoverflow.com/questions/39287744

复制
相关文章

相似问题

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