Ubuntu 16.04,英伟达工具包8.0 RC,暗网编译错误:预期为a“;“

jmp7cifd  于 2022-12-17  发布在  其他
关注(0)|答案(3)|浏览(116)

我正在Ubuntu 16.04上编译Darknet,支持GPU。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/表面函数. h的错误行显示如下内容:

template<> __device__ __cudart_builtin__ char surf1Dread(surface<void, cudaSurfaceType1D> surf, int x, enum cudaSurfaceBoundaryMode mode) asm("__surf1Dread_char") ;

有什么建议吗?

mrfwxfqh

mrfwxfqh1#

因此,当您的环境在编译过程中使用不同版本的 nvcc 二进制文件和cuda * include * 文件时,就会发生这种情况。
Darknet使用 /usr/local/cuda/include/ 作为它的include路径,但在执行nvcc二进制时依赖于您的PATH。而且它可能属于系统中的另一个cuda安装。
要避免这种情况,请强制您的shell在/usr/local/cuda/bin/nvcc中搜索nvcc。
这可以通过破解Makefile中的nvcc路径来实现:

NVCC=nvcc替换为NVCC=/usr/本地/cuda/bin/nvcc

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

PATH=/usr/local/cuda/bin:$PATH make
wqsoz72f

wqsoz72f2#

如果您安装了多个版本的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'),编译就可以了!

nle07wnf

nle07wnf3#

此错误是由于nvcc版本7.5造成的
看起来通过deb文件安装的Cuda工具包8.0 RC没有nvcc版本8我已经通过cuda_8.0.27_linux.run重新安装了cuda,现在它对我有效了

相关问题