Ошибка сегментации при компиляции 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/ -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 отличается от версии 9.1 инструментов компиляции Cuda. Может в этом проблема? NVCC устанавливается с помощью apt install nvidia-cuda-toolkit


person Toboxos    schedule 18.10.2019    source источник
comment
Показанная версия nvidia-smi не имеет никакого отношения к тому, какую версию инструментария CUDA вы установили. Показывает только то, что поддерживает установленный драйвер   -  person talonmies    schedule 18.10.2019


Ответы (2)


Просто опубликую здесь свое решение, потому что я выяснил настоящую причину этого. Причина, по которой это происходит, заключается в том, что он запускает другой двоичный файл, чем тот, который действительно хочет запустить даркнет. По крайней мере, для меня which nvcc дал мне /usr/bin/nvcc. Фактический nvcc, который вам нужен, находится в /usr/local/cuda-11.1/bin (номер версии, очевидно, может отличаться). Итак, все, что вам нужно сделать, это добавить (важно!) Этот каталог в вашу переменную PATH.

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

Я рекомендую вам перейти по ссылке, потому что есть еще пара обязательных шагов после установки, которые я также не выполнил.

person Harrison Jin    schedule 23.10.2020

Я решил проблему. После установки cuda фактический двоичный файл nvcc находится в / usr / local / cuda / bin / nvcc. Создание символьной ссылки в / usr / bin / на этот двоичный файл решило проблему.

person Toboxos    schedule 18.10.2019