Проблемы с графическим драйвером Nvidia и CUDA после обновления apt-get

9

Ранее я установил CUDA 7.5 на Ubuntu 14.04, используя установку «deb (network)» из Nvidia. Это работало в течение нескольких месяцев, пока я не побежал sudo apt-get upgradeсегодня. После этого я столкнулся со следующим

$ nvidia-smi
modprobe: ERROR: ../libkmod/libkmod-module.c:809 kmod_module_insert_module() could not find module by name='nvidia_352'
modprobe: ERROR: could not insert 'nvidia_352': Function not implemented
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

Бег sudo nvidia-smiничем не отличается. Я не могу войти в режиме графического интерфейса (он просто возвращается к экрану входа в систему после ввода пароля), но я могу получить доступ к терминалу.

Мне удалось восстановить графическую функциональность, однако после этого у меня возникают трудности с переустановкой CUDA. Не могли бы вы мне помочь?

Восстановление графики

Я обнаружил, что могу заставить графику работать снова, выполнив

$ sudo apt-get remove --purge nvidia*
$ sudo apt-get autoremove

а затем редактирование, /etc/apt/sources.list.d/cuda.listчтобы удалить все строки, затем делать

$ sudo apt-get install nvidia-352

и перезагрузка системы. После этого nvidia-smiснова работает. Тем не менее, мне все еще нужно переустановить CUDA.

Попытка переустановить CUDA

Я пытался восстановить содержимое, /etc/apt/sources.list.d/cuda.listа затем делать sudo apt-get install cuda. Я заметил это сообщение об ошибке:

Loading new nvidia-352-352.93 DKMS files...
Building only for 3.13.0-68-generic
Building for architecture x86_64
Building initial module for 3.13.0-68-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/nvidia-352.0.crash'
Error! Bad return status for module build on kernel: 3.13.0-68-generic (x86_64)

После этого система возвращается к своему поведению при запуске. Например, nvidia-smiпечатает сообщение об ошибке выше, и после сборки и запуска deviceQueryя получаю похожую ошибку:

./deviceQuery Starting...

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

modprobe: ERROR: ../libkmod/libkmod-module.c:809 kmod_module_insert_module() could not find module by name='nvidia_352'
modprobe: ERROR: could not insert 'nvidia_352': Function not implemented
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

Кажется, я вспоминаю, что когда я впервые установил CUDA, он работал бы только в том случае, если бы я делал это без обновления nvidia-352пакета из репозиториев Nvidia. Тем не менее, сейчас у меня нет возможности сделать это, потому что при запуске sudo apt-get install cudaон автоматически обновляет nvidia-352пакет:

Unpacking nvidia-352 (352.93-0ubuntu1) over (352.63-0ubuntu0.14.04.1) ...

Если я пытаюсь установить версии явно, я получаю

$ sudo apt-get install cuda-drivers nvidia-352=352.63-0ubuntu0.14.04.1 nvidia-352-dev=352.63-0ubuntu0.14.04.1
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies.
 cuda-drivers : Depends: nvidia-352 (>= 352.93) but 352.63-0ubuntu0.14.04.1 is to be installed
                Depends: nvidia-352-dev (>= 352.93) but 352.63-0ubuntu0.14.04.1 is to be installed
E: Unable to correct problems, you have held broken packages.

На самом деле, если я пытаюсь использовать версию 352.63-0ubuntu1вместо того 352.63-0ubuntu0.14.04.1, чтобы делать

$ sudo apt-get install nvidia-352=352.63-0ubuntu1

тогда этого достаточно, чтобы сломать графический логин и вызвать nvidia-smiотображение сообщения об ошибке выше.

диагностика

$ lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GM200 [GeForce GTX TITAN X] (rev a1)

$ dpkg -l | grep -i nvidia
ii  bbswitch-dkms                                         0.7-2ubuntu1                                        amd64        Interface for toggling the power on nVidia Optimus video cards
ii  libcuda1-352                                          352.93-0ubuntu1                                     amd64        NVIDIA CUDA runtime library
ii  nvidia-352                                            352.93-0ubuntu1                                     amd64        NVIDIA binary driver - version 352.93
ii  nvidia-352-dev                                        352.93-0ubuntu1                                     amd64        NVIDIA binary Xorg driver development files
ii  nvidia-352-uvm                                        352.93-0ubuntu1                                     amd64        Transitional package for nvidia-352
ii  nvidia-modprobe                                       352.93-0ubuntu1                                     amd64        Load the NVIDIA kernel driver and create device files
ii  nvidia-opencl-icd-352                                 352.93-0ubuntu1                                     amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                                          0.6.2                                               amd64        Tools to enable NVIDIA's Prime
ii  nvidia-settings                                       352.93-0ubuntu1                                     amd64        Tool for configuring the NVIDIA graphics driver
pterojacktyl
источник

Ответы:

6

У меня была аналогичная проблема. Был в состоянии решить эту проблему, установив рекомендуемую версию драйвера nvidia.

sudo apt-get install ubuntu-drivers-common

sudo ubuntu-drivers devices

sudo apt-get install <recommended version>
Пратик Дорвал
источник
3
Я должен был выполнить команду "sudo modprobe nvidia" после вышеупомянутых команд, тогда все работало
МАРК
@MARK Я получаю сообщение об ошибке от modprobe: ОШИБКА: не удалось вставить 'nvidia_396': требуемый ключ недоступен. Какие-нибудь советы?
Аэрин
4

Друг смог решить это за меня!

Решение, которое он мне показал, было (после удаления всех пакетов nvidia, как и раньше)

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get install nvidia-364

затем загрузите инсталлятор .run CUDA (для меня это был cuda_7.5.18_linux.run) с Nvidia и будьте внимательны, если вы спросите, хотите ли вы установить драйвер, который поставляется с CUDA.

pterojacktyl
источник