Problemas con el controlador de gráficos Nvidia y CUDA después de la actualización de apt-get

9

Previamente instalé CUDA 7.5 en Ubuntu 14.04 usando la instalación "deb (network)" de Nvidia. Ha funcionado durante unos meses, hasta que corrí sudo apt-get upgradehoy. Después de hacer esto, me encontré con lo siguiente

$ 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-smino es diferente. No puedo iniciar sesión en modo GUI (solo vuelve a la pantalla de inicio de sesión después de ingresar mi contraseña), pero puedo acceder al terminal.

He podido restaurar la funcionalidad gráfica, sin embargo, tengo problemas para volver a instalar CUDA después de eso. ¿Podrías ayudarme?

Restaurando gráficos

He descubierto que puedo hacer que los gráficos vuelvan a funcionar haciendo

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

y luego editando /etc/apt/sources.list.d/cuda.listpara eliminar todas las líneas, luego haciendo

$ sudo apt-get install nvidia-352

y reiniciando el sistema. Después de esto, nvidia-smiestá trabajando de nuevo. Sin embargo, todavía necesito reinstalar CUDA.

Intentando reinstalar CUDA

Traté de restaurar el contenido de /etc/apt/sources.list.d/cuda.listy luego hacerlo sudo apt-get install cuda. Noté este mensaje de error:

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)

Después de hacer esto, el sistema vuelve a su comportamiento al comienzo. Por ejemplo, nvidia-smiimprime el mensaje de error anterior, y después de compilar y ejecutar deviceQueryme sale un error similar:

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

Creo recordar que cuando instalé CUDA por primera vez, solo funcionaría si lo hiciera sin actualizar el nvidia-352paquete desde los repositorios de Nvidia. Sin embargo, ahora parece que no tengo la opción de hacerlo, porque cuando lo ejecuto sudo apt-get install cudaactualiza automáticamente el nvidia-352paquete:

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

Si trato de configurar las versiones explícitamente, obtengo

$ 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 hecho, si trato de usar la versión en 352.63-0ubuntu1lugar de 352.63-0ubuntu0.14.04.1hacerlo

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

entonces esto es suficiente para romper el inicio de sesión gráfico y hacer nvidia-smique se muestre el mensaje de error anterior.

Diagnósticos

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

Respuestas:

6

Tuve un problema similar. Pude resolver esto instalando la versión recomendada del controlador nvidia.

sudo apt-get install ubuntu-drivers-common

sudo ubuntu-drivers devices

sudo apt-get install <recommended version>
Prateek Dorwal
fuente
3
Tuve que emitir el comando "sudo modprobe nvidia" después de los comandos anteriores, entonces todo funcionaba
MARCA
@ MARCA Recibo un error por modprobe: ERROR: no se pudo insertar 'nvidia_396': la clave requerida no está disponible. ¿Algun consejo?
Aerin
4

¡Un amigo pudo resolverlo por mí!

La solución que me mostró fue (después de eliminar todos los paquetes de nvidia como antes)

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

luego descargue el instalador .run CUDA (para mí fue cuda_7.5.18_linux.run) de Nvidia y tenga cuidado de elegir "no" cuando se le pregunte si desea instalar el controlador que está empaquetado con CUDA.

pterojacktyl
fuente