我正在编译 Darknet在具有 GPU 支持的 Ubuntu 16.04 上。 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") ;
有什么建议吗?
最佳答案
因此,当您的环境在编译过程中使用不同版本的 nvcc 二进制文件和 cuda includes 文件时,就会发生这种情况。
Darknet 使用 /usr/local/cuda/include/ 作为它的包含路径 但在执行 nvcc 二进制文件时依赖于你的PATH。它可能属于您在系统中安装的另一个 cuda。
为了避免这种情况,强制您的 shell 在/usr/local/cuda/bin/nvcc 中搜索 nvcc。
这可以通过修改 Makefile 中的 nvcc 路径来完成:
替换 NVCC=nvcc 为 NVCC=/usr/local/cuda/bin/nvcc
或通过为 make 命令修改 PATH 变量(更简单且与 session 相关)
PATH=/usr/local/cuda/bin:$PATH make
关于c++ - Ubuntu 16.04,Nvidia toolkit 8.0 RC,暗网编译错误: expected a ";",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39287744/