Solución:
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).
Requisitos previos de instalación
- g ++ – Debe utilizar la versión más reciente 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 GCC 5.x. Si su distribución usa GCC 5.x de forma predeterminada, utilícelo; de lo contrario, GCC 5.4.0 debería funcionar. 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 por defecto hacer que nvcc invoque gcc en lugar de g ++ en algunos casos con un
-x
cambiar (pero no estoy seguro de esto). - libGLU – Bibliotecas Mesa OpenGL (+ archivos de desarrollo?)
- libXi – Bibliotecas de extensión X Window System Xinput (+ archivos de desarrollo?)
- libXmu – Biblioteca de “utilidades varias” del sistema 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, bueno, eso depende exactamente de la distribución que esté utilizando. Pero puede probar 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 podrías agregar algunos -dbg
versiones de esos paquetes para depurar símbolos.
soy lindo Seguro que esto lo cubre todo, pero es posible que me haya perdido algo que ya había instalado. Además, CUDA puede funcionar con clang, al menos experimentalmente, pero no lo he probado.
Instalación del controlador del kernel CUDA
- Vaya a la página de descargas de CUDA de NVIDIA.
- Escoger Linux> x86_64> Ubuntu , y luego la última versión que tengan (en el momento de escribir este artículo: Ubuntu 15.04).
- Elegir el archivo .run opción.
- Descargue el archivo .run (actualmente este). Asegurarse no ponerlo en
/tmp
. - Haga que el archivo .run sea ejecutable:
chmod a+x cuda_7.5.18_linux.run
. - Conviértete en root.
- Ejecuta el archivo .run: finge aceptar su tonta licencia de envoltura retráctil; diga “sí” a la instalación únicamente 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 de NVIDIA, pero que debería reiniciar antes de continuar / reintentar la instalación del kit de herramientas. Entonces…
- Habiendo aparentemente tenido éxito, reinicie.
Instalación de CUDA en sí
- Sea root.
- Localizar y ejecutar
cuda_7.5.18_linux.run
- 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 funcione para usted).
Es probable que el instalador ahora fallar. Eso es bueno asumiendo 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 la falta bibliotecas, 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 fallo”, proceda a:
- Vuelva a invocar el archivo .run, esta vez con la opción –override.
- Haga las mismas elecciones que en el paso 11.
CUDA ahora debería estar instalado, por defecto en /usr/local/cuda
(eso es un enlace simbólico). ¡Pero no hemos terminado!
Dirigir al compilador nvcc de NVIDIA para que use la versión g ++ correcta
El compilador CUDA de NVIDIA realmente llama a g ++ como parte del proceso de vinculación y / o para compilar C ++ real en lugar de archivos .cu. Creo. De todos modos, por defecto ejecuta lo que esté en su camino como g++
; pero si colocas otro g++
debajo /usr/local/cuda/bin
, ¡lo usará primero! Entonces…
- Ejecutar
symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++
(y en buena medida, tal vez tambiénsymlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc
.
Eso es todo.
Probar la instalación
cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
make
La compilación debe concluir con éxito, y cuando lo hagas
./vectorAdd
debería obtener el siguiente resultado:
[email protected]:~/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 (GPU Development Kit), pero no duele y puede ser útil para algunos. Instálelo en el directorio raíz de su sistema; es bastante seguro y luego hay un desinstalador:
/usr/bin/uninstall_gdk.pl
. En CUDA 8 ya está integrado en el propio 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, usando
lspci | grep -i nvidia
.
Creo que deberías hacerlo usando backports, en realidad estoy instalando sin problemas nvidia-cuda-toolkit
7.5 en debian jessie.
Agregue backports, no gratuitos, 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
Saved, apt-get update y finalmente:
apt-get install -t jessie-backports nvidia-cuda-toolkit
Puedes añadir valor a nuestra información participando con tu experiencia en las crónicas.