¿Cómo instalar CUDA Toolkit 7/8/9 en Debian 8 (Jessie) o 9 (Stretch)?

26

¿Cómo instalar Cuda Toolkit 7.0 u 8 en Debian 8?

Sé que Debian 8 viene con la opción de descargar e instalar CUDA Toolkit 6.0 usando apt-get install nvidia-cuda-toolkit, pero ¿cómo se hace esto para CUDA toolkit versión 7.0 u 8?

Intenté instalar usando los instaladores de Ubuntu, como se describe a continuación:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

Sin embargo, no funcionó y se devolvió el siguiente mensaje:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
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 : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Greg
fuente
@nullgeppetto: Intente seguir las instrucciones de mi respuesta a continuación :-)
einpoklum - restablezca a Mónica el

Respuestas:

30

Las siguientes instrucciones son válidas para CUDA 7.0, 7.5 y varias versiones anteriores (y probablemente posteriores). En cuanto a las distribuciones de Debian, son válidas para Jessie y Stretch y probablemente para otras versiones. Asumen una arquitectura amd64 (x86_64), pero puede adaptarlos fácilmente para x86 (x86_32).

Prerrequisitos de instalación

  • g ++ : debe utilizar la última versión de GCC compatible con su versión de CUDA. Para CUDA 7.x, esta sería la versión 4.9.3, la última de la línea 4.x; para CUDA 8.0, se admiten las versiones de GCC 5.x. Si su distribución usa GCC 5.x de manera predeterminada, úselo, de lo contrario GCC 5.4.0 debería hacerlo. Las versiones anteriores son utilizables, pero no las recomendaría, aunque solo sea por la mejor compatibilidad con las funciones modernas de C ++ para el código del lado del host.
  • gcc : viene con g ++. Incluso creo que CMake podría tener nvcc invocar gcc en lugar de g ++ en algunos casos con un -xinterruptor (pero no estoy seguro de esto).
  • libGLU - Bibliotecas Mesa OpenGL (+ archivos de desarrollo?)
  • LibXi - Bibliotecas de extensión Xinput del sistema X Window (+ archivos de desarrollo?)
  • Biblioteca de "utilidades diversas" del sistema libXmu - X Window (¿+ archivos de desarrollo?)
  • Kernel de Linux : encabezados para la versión del kernel que está ejecutando.

Si desea una lista de paquetes específicos, eso depende exactamente de qué distribución, pero intente lo siguiente (para CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

Y puede agregar algunas -dbgversiones de esos paquetes para depurar símbolos.

Estoy bastante seguro de que esto lo cubre todo, pero podría haber perdido algo que ya había instalado. Además, CUDA puede trabajar con clang , al menos experimentalmente, pero no lo he intentado.

Instalación del controlador del kernel CUDA

  1. Vaya a la página de descargas de CUDA de NVIDIA .
  2. Elija Linux> x86_64> Ubuntu , y luego la última versión que tengan (al momento de escribir: Ubuntu 15.04).
  3. Elija la opción de archivo .run .
  4. Descargue el archivo .run (actualmente este ). Asegúrate de no ponerlo /tmp.
  5. Hacer que el archivo ejecutable .run: chmod a+x cuda_7.5.18_linux.run.
  6. Conviértete en root.
  7. Ejecute el archivo .run: pretenda aceptar su licencia tonta retráctil; diga "sí" a la instalación solo del controlador del kernel de NVIDIA y diga "no" a todo lo demás.

La instalación debería indicarle que espera haber instalado el controlador del kernel NVIDIA, pero que debe reiniciar antes de continuar / volver a intentar la instalación del kit de herramientas. Asi que...

  1. Habiendo tenido éxito aparentemente, reinicie.

Instalar CUDA en sí

  1. Se root.
  2. Localizar y ejecutar cuda_7.5.18_linux.run
  3. Esta vez, diga No a la instalación del controlador, pero Sí a la instalación de todo lo demás, y acepte las rutas predeterminadas (o cámbielas, lo que sea que le convenga).

Es probable que el instalador falle ahora . Es bueno suponer que es el tipo de falla que esperamos: debería decirle que su versión del compilador no es compatible: CUDA 7.0 o 7.5 admite hasta gcc 4.9 y tiene alguna versión 5.x por defecto. Ahora, si recibe un mensaje sobre bibliotecas faltantes , eso significa que mis instrucciones anteriores con respecto a los requisitos previos fallaron de alguna manera, y debe comentar aquí para que pueda solucionarlos. Suponiendo que obtuvo el "buen fracaso", proceda a:

  1. Vuelva a invocar el archivo .run, esta vez con la opción --override.
  2. Haga las mismas elecciones que en el paso 11.

CUDA ahora debería estar instalado, de manera predeterminada en /usr/local/cuda(eso es un enlace simbólico). ¡Pero no hemos terminado!

Dirigir el compilador nvcc de NVIDIA para usar la versión correcta de g ++

El compilador CUDA de NVIDIA en realidad llama a g ++ como parte del proceso de vinculación y / o para compilar archivos C ++ reales en lugar de archivos .cu. Yo creo que. De todos modos, el valor predeterminado es ejecutar lo que esté en su camino como g++; pero si coloca otrog++ debajo /usr/local/cuda/bin, ¡lo usará primero! Asi que...

  1. Ejecutar symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(y por si acaso, quizás también symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Eso es.

Probar la instalación

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

La compilación debería concluir con éxito, y cuando lo hagas

  1. ./vectorAdd

deberías obtener el siguiente resultado:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Notas

  • No necesita instalar NVIDIA GDK (Kit de desarrollo de GPU), pero no duele y puede ser útil para algunos. Instálelo en el directorio raíz de su sistema; que es bastante seguro y hay un desinstalador después: /usr/bin/uninstall_gdk.pl. En CUDA 8 ya está integrado en CUDA IIANM.
  • No instale paquetes adicionales con nombres como nvidia -... o cuda ...; Puede que no duelan, pero ciertamente no ayudarán.
  • Antes de hacer cualquiera de estas cosas, es posible que desee asegurarse de que su GPU sea reconocida, utilizando lspci | grep -i nvidia.
einpoklum - reinstalar a Monica
fuente
... bueno, casi todo esto: no puede instalar el controlador del núcleo si no es root, por supuesto. Pero puede construir (no ejecutar) código CUDA sin él.
einpoklum - reinstalar a Mónica el
Solo intenté esto. el instalador de cuda simplemente se niega a instalar. Se rescata con una advertencia de que debe usar el archivo .deb.
@WernerVanBelle: ¿Puedes publicar eso como una pregunta separada? ¿O al menos citar la advertencia si es demasiado corta? Además, IIRC tiene alguna opción de línea de comando "forzar", ¿lo has intentado?
einpoklum - reinstalar a Mónica el
Todo esto, excepto la instalación del controlador, también se puede hacer como un usuario no root en su directorio de inicio, pero eso solo sería suficiente para construir el código CUDA, no para ejecutarlo . Necesitas un controlador nVIDIA apropiado en tu kernel para eso, y solo un usuario root puede hacer que eso suceda. Perdón por mi comentario anterior que sugería lo contrario. Además, para compilar como usuario no root, es posible que deba compilar su propia versión de gcc / g ++ si su distribución solo tiene una versión más nueva (para CUDA 7.x necesitaría gcc 4.9.3).
einpoklum - reinstalar a Monica
@celavek: si cree que esta respuesta no cubre Debian 9 lo suficientemente bien, explique por qué antes de realizar una edición sugerida.
einpoklum - reinstalar a Monica el
6

Creo que deberías hacerlo usando backports, en realidad estoy instalando sin problemas nvidia-cuda-toolkit7.5 en Debian Jessie.

Agregue backports, no gratis, a su /etc/apt/sources.list. Para mí (en Jessie) acabo de poner esto en la parte inferior de mi archivo:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

guardado, apt-get update y finalmente:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
fuente
1

Después de agregar contrib y repositorios no gratuitos a sources.list y ejecutar apt-get update, CUDA Toolkit está en Synaptic en nvidia-cuda-toolkit.

Foto por defecto
fuente
1

Con Debian 9 "stretch" con una GPU anterior (GT 720) se necesitan pasos adicionales. Veo que alguien de arriba (@celavek) tenía esto, así que completaré lo que funcionó para mí. La respuesta aceptada cubre casi todo lo necesario. Reconocer que este es un buen ejemplo de nicho, pero espero que haya algunas cosas útiles aquí que ahorren a las personas algunas búsquedas en Google.

Para CUDA 8.0 en el paso 1, haga clic en "Versiones heredadas" y seleccione "CUDA Toolkit 8.0 GA 2". Luego Linux, x86_64, Ubuntu, 16.04, runfile (local).

No acepté el controlador empaquetado y en su lugar utilicé mis controladores 384.130 previamente instalados para mi GPU. Más información sobre eso aquí: Debian Wiki . Su millaje puede variar, no puedo hablar por otras tarjetas que no sean una GT 720. Este fue el camino que elegí, no me arrepiento (todavía).

Cuando la instalación falla debido a una incapacidad para InstallUtils.pm local en el paso 12, deberá descomprimir el archivo cuda_8.0.61_375.26_linux.run pero ejecutarlo con el indicador --tar mxvf. Luego (como root) copie InstallUtils.pm a / usr / lib / x86_64-linux-gnu / pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

Ahora el comando del paso 12 debería tener éxito.

Su Debian 9.0 viene con g ++ versión 6+, esto no funcionará. La compilación de vectorAdd en el paso 15 fallará. Seguí este documento técnico: Instalación de varias versiones de GCC para instalar la versión 5.5.0. Para 5.5.0 querrás este archivo

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

y desempaquete el tarball con esto:

tar -xJf gcc-5.5.0.tar.xz

Necesitaba actualizar algunas cosas (bibliotecas y agregar compilación de 32 bits) para que esto funcione para mí:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Ahora puede configurar, crear e instalar el compilador.

Recuerde configurar con los --prefix = / usr / local / gcc / 5.5.0 bandera

Ahora puede compilar el ejemplo de vectorAdd en el paso 15 con esto:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

O esto:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

No es necesario modificar el Makefile, maneja la anulación del compilador correctamente.

Ahora debería tener una instalación CUDA 8.0 en funcionamiento en estiramiento.

Ingo
fuente
0

Intente utilizar los instaladores de red para Ubuntu desde esta página:

https://developer.nvidia.com/cuda-downloads#linux

Los instaladores para Ubuntu 14. * deberían ser lo suficientemente compatibles.

Tomasz Klim
fuente
1
Debería haber mencionado que el instalador de ubuntu no funcionó: actualicé la publicación para reflejar esto.
Greg
@ Greg, ¿has descubierto cómo instalar Cuda en Debian eventualmente?
nullgeppetto
@nullgeppetto Terminé renunciando a la idea de Debian porque encontré demasiados problemas de compatibilidad que no pude superar.
Greg
@ Greg, hmmm, eso es lo que tenía miedo ... Entonces, ¿fuiste por * ubuntu o alguna otra cosa? Personalmente, todavía estoy esperando mi gtx 960, así que lo probaré en Debian ... te lo haré saber si quieres.
nullgeppetto