我正在支持GPU的Ubuntu16.04上编译Darknet。Nvidial工具包8.0 RC版
然后我就会遇到错误:
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在错误行的内容如下:
template<> __device__ __cudart_builtin__ char surf1Dread(surface<void, cudaSurfaceType1D> surf, int x, enum cudaSurfaceBoundaryMode mode) asm("__surf1Dread_char") ;有什么建议吗?
发布于 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变量(更简单且与会话相关)
PATH=/usr/local/cuda/bin:$PATH make发布于 2016-12-23 03:03:16
如果您已经安装了多个版本的CUDA并且需要它们(像我一样),我建议在您的(BASH) RC中添加以下内容:
# 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')和编译工作!
发布于 2016-09-11 14:33:09
此错误是由于nvcc 7.5版造成的
看起来通过deb文件安装的Cuda工具包8.0 RC没有安装nvcc版本8,我已经通过cuda_8.0.27_linux.run重新安装了cuda,现在可以使用了
https://stackoverflow.com/questions/39287744
复制相似问题