Problemas com o driver gráfico da Nvidia e o CUDA após a atualização do apt-get

9

Eu instalei anteriormente o CUDA 7.5 no Ubuntu 14.04 usando a instalação "deb (network)" da Nvidia. Funcionou por alguns meses, até que eu corri sudo apt-get upgradehoje. Depois de fazer isso, encontrei o seguinte

$ 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.

Correr sudo nvidia-sminão é diferente. Não consigo fazer o login no modo GUI (ele volta à tela de login depois de inserir minha senha), mas posso acessar o terminal.

Consegui restaurar a funcionalidade gráfica, mas estou tendo dificuldade em reinstalar o CUDA depois disso. Você pode por favor me ajudar?

Restaurando gráficos

Descobri que posso fazer com que os gráficos funcionem novamente, fazendo

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

e depois editando /etc/apt/sources.list.d/cuda.listpara remover todas as linhas, fazendo

$ sudo apt-get install nvidia-352

e reiniciando o sistema. Depois disso, nvidia-smiestá funcionando novamente. No entanto, ainda preciso reinstalar o CUDA.

Tentando reinstalar o CUDA

Eu tentei restaurar o conteúdo /etc/apt/sources.list.d/cuda.liste depois fazer sudo apt-get install cuda. Notei esta mensagem de erro:

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)

Depois de fazer isso, o sistema retorna ao seu comportamento no início. Por exemplo, nvidia-smiimprime a mensagem de erro acima e, após criar e executar deviceQuery, recebo um erro semelhante:

./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

Lembro-me de que, quando instalei o CUDA pela primeira vez, ele só funcionaria se o fizesse sem atualizar o nvidia-352pacote dos repositórios da Nvidia. No entanto, agora não pareço ter a opção de fazer isso, porque, quando eu o executo sudo apt-get install cuda, atualiza automaticamente o nvidia-352pacote:

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

Se eu tentar definir explicitamente as versões, recebo

$ 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.

De fato, se eu tentar usar a versão em 352.63-0ubuntu1vez de 352.63-0ubuntu0.14.04.1fazer

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

isso é suficiente para interromper o login gráfico e nvidia-smiexibir a mensagem de erro acima.

Diagnóstico

$ 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
fonte

Respostas:

6

Eu tive um problema parecido. Foi capaz de resolver isso instalando a versão recomendada do driver da nvidia.

sudo apt-get install ubuntu-drivers-common

sudo ubuntu-drivers devices

sudo apt-get install <recommended version>
Prateek Dorwal
fonte
3
Eu tinha que emitir o comando "sudo modprobe nvidia" após os comandos acima, então cada coisa estava trabalhando
MARK
@ MARK Estou recebendo erro por modprobe: ERRO: não foi possível inserir 'nvidia_396': chave necessária não disponível. Alguma dica?
quer
4

Um amigo foi capaz de resolver isso para mim!

A solução que ele me mostrou foi (depois de remover todos os pacotes da nvidia como antes)

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

faça o download do instalador .run CUDA (para mim era cuda_7.5.18_linux.run) da Nvidia e tenha cuidado ao escolher "não" quando for perguntado se você deseja instalar o driver fornecido com o CUDA.

pterojacktyl
fonte