Никакое CUDA-способное устройство не обнаруживается, хотя требования установлены

Проблема

Я просто установил cuda следование официальным инструкциям по установкам через .deb файл. Когда дело доходит до раздела 6.2.2.3 (выполнение deviceQuery) Я получаю сообщение, что никакое CUDA-способное устройство не было найдено, хотя я вполне уверен, все - установка правильно:

$ ./bin/x86_64/linux/release/deviceQuery
./bin/x86_64/linux/release/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

Информация о системе

Вот некоторая информация о моей системе:

$ uname -m && cat /etc/*release
x86_64
DISTRIB_RELEASE=16.04
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
VERSION="16.04.2 LTS (Xenial Xerus)"

$ uname -r
4.4.0-64-generic

$ lspci | grep -i nvidia
08:00.0 3D controller: NVIDIA Corporation GK208M [GeForce 920M] (rev a1)

$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

Я также проверил, что заголовки ядрa установлены:

$ sudo apt-get install linux-headers-$(uname -r)
linux-headers-4.4.0-64-generic is already the newest version (4.4.0-64.85).

Установка CUDA

Таким образом, моя система встречает все предпосылки. Я затем следовал инструкциям для установки через Кв. - добираются (я установил cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb).

PATH и LD_LIBRARY_PATH набор должен указать на необходимые местоположения:

$ echo $PATH
/usr/local/cuda-8.0/bin:[...]

$ echo $LD_LIBRARY_PATH 
/usr/local/cuda-8.0/lib64

Обратите внимание, что я действительно устанавливал LD_LIBRARY_PATH вручную, хотя это было упомянуто, чтобы быть необходимым только для runfile установки. Однако ошибка сохраняется при сбросе LD_LIBRARY_PATH.

Драйверы NVIDIA также, кажется, актуальны:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  367.57  Mon Oct  3 20:37:01 PDT 2016
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

Информация о cuda драйвере компилятора:

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61

Инструкции упоминают, что это могло быть проблемой с разрешением файла:

Если CUDA-способное устройство и Драйвер CUDA установлены, но deviceQuery сообщает, что никакие CUDA-способные устройства не присутствуют, это вероятное означает, что/dev/nvidia* файлы пропускают или имеют неправильные полномочия.

Те файлы не имели флага выполнения, который я затем добавил:

$ ls -al /dev/nvidia*
crwxrwxrwx 1 root root 195,   0 Feb 27 13:17 /dev/nvidia0
crwxrwxrwx 1 root root 195, 255 Feb 27 13:17 /dev/nvidiactl
crwxrwxrwx 1 root root 195, 254 Feb 27 13:17 /dev/nvidia-modeset
crwxrwxrwx 1 root root 243,   0 Feb 27 13:17 /dev/nvidia-uvm
crwxrwxrwx 1 root root 243,   1 Feb 27 18:24 /dev/nvidia-uvm-tools

Однако после выполнения deviceQuery (который все еще перестал работать), некоторые полномочия сбрасываются:

$ ls -al /dev/nvidia*
crwxrwxrwx 1 root root 195,   0 Feb 27 13:17 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Feb 27 13:17 /dev/nvidiactl
crwxrwxrwx 1 root root 195, 254 Feb 27 13:17 /dev/nvidia-modeset
crw-rw-rw- 1 root root 243,   0 Feb 27 13:17 /dev/nvidia-uvm
crw-rw-rw- 1 root root 243,   1 Feb 27 18:24 /dev/nvidia-uvm-tools

Это является немного озадачивающим особенно, потому что я работаю deviceQuery без sudo.

Возможно, связанный

Образцы создают сбои

Когда я пытаюсь создать cuda образцы через make это перестало работать для одного из них с сообщением

/usr/bin/ld: cannot find -lnvcuvid
collect2: error: ld returned 1 exit status
Makefile:381: recipe for target 'cudaDecodeGL' failed
make[1]: *** [cudaDecodeGL] Error 1

Который действительно, кажется, отсутствует:

$ ls /usr/local/cuda-8.0/lib64/libnvcuvid
ls: cannot access '/usr/local/cuda-8.0/lib64/libnvcuvid': No such file or directory

Хотя соответствующий заголовочный файл там:

$ ls /usr/local/cuda-8.0/targets/x86_64-linux/include/nvcuvid.h 
/usr/local/cuda-8.0/targets/x86_64-linux/include/nvcuvid.h

Проблема со статическим подключением

Ошибка, которая повышена от deviceQuery предлагает проблему со статическим подключением:

CUDA Device Query (Runtime API) version (CUDART static linking)

AFAIK LD_LIBRARY_PATH только ответственно за динамическое подключение. Я нашел этот вопрос, где предложение состоит в том, чтобы включать /usr/lib/nvidia-current к пути компоновщика. Однако этот каталог не существует в моей установке:

$ ls /usr/lib/nvidia-current
ls: cannot access '/usr/lib/nvidia-current': No such file or directory
5
задан 23 May 2017 в 05:39

2 ответа

Похож на Вас, находятся на ноутбуке с Optimus Nvidia, имеют Вас переключенный на Nvidia с помощью prime-select nvidia

2
ответ дан 23 November 2019 в 10:26

Нужно также отметить, что другая потенциальная причина этого поведения состоит в том если CUDA_VISIBLE_DEVICES переменная среды была установлена опустеть.

Я испытал подобные проблемы, и оказалось, что это случайно становилось установленным в моих файлах среды удара.

1
ответ дан 23 November 2019 в 10:26

Другие вопросы по тегам:

Похожие вопросы: