编译Darknet for GPU时出现分段错误

时间:2019-10-18 07:29:38

标签: cuda gpu nvidia nvcc darknet

我想在支持GPU的PC上编译Darknet框架以进行机器学习。但是我打电话给我,我会遇到细分错误:

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 --version 时,我得到:

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

CUDA版本10.1与Cuda编译工具的9.1版不同。这可能是问题吗? NVCC是通过 apt install nvidia-cuda-toolkit

安装的

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

只想在这里发布我的解决方案,因为我已经找到了造成这种情况的真正原因。因此,发生这种情况的原因是因为它运行的二进制文件与实际运行的深色网络不同。至少对我来说,which nvcc给了我/usr/bin/nvcc。所需的实际nvcc位于/usr/local/cuda-11.1/bin中(版本号可能明显不同)。因此,您所需要做的就是将该目录 prepend (重要!)。

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

来源:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions

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