Cuda 为GPU编译暗网时出现分段错误

Cuda 为GPU编译暗网时出现分段错误,cuda,gpu,nvidia,nvcc,darknet,Cuda,Gpu,Nvidia,Nvcc,Darknet,我想在我的电脑上用GPU支持编译机器学习的Darknet框架。但是,我调用make时,会出现分段错误: nvcc -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -Iinclude/ -Isrc/ -DOP

我想在我的电脑上用GPU支持编译机器学习的Darknet框架。但是,我调用make时,会出现分段错误:

nvcc  -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -Iinclude/ -Isrc/ -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
Segmentation fault (core dumped)
Makefile:92: recipe for target 'obj/convolutional_kernels.o' failed
make: *** [obj/convolutional_kernels.o] Error 139
nvidia smi向我提供了以下信息:

NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1
当我执行nvcc时--我得到的版本:


CUDA版本10.1与CUDA编译工具的Verions 9.1不同。这可能是问题所在吗?NVCC是通过apt安装nvidia cuda工具包安装的

我解决了这个问题。安装cuda后,nvcc的实际二进制文件位于/usr/local/cuda/bin/nvcc。在/usr/bin/中创建一个指向这个二进制文件的符号链接解决了这个问题。

我想在这里发布我的解决方案,因为我找到了这个问题的实际原因。发生这种情况的原因是因为它运行的二进制文件与darknet想要运行的二进制文件不同。至少对我来说,
哪个nvcc
给了我
/usr/bin/nvcc
。您想要的实际
nvcc
位于
/usr/local/cuda-11.1/bin
(版本号可能明显不同)。所以,您所需要做的就是将这个目录预加(重要!)到PATH变量

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}>~/.bashrc

资料来源:


我建议您遵循该链接,因为还有一些我也没有遵循的强制性安装后步骤。

显示的nvidia smi版本与您安装的CUDA toolkit版本无关。它只显示安装的驱动程序支持的内容
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85