Instalando Drivers de Nvidia y CUDA 7.0 en Debian Wheezy

English version of this post.
Éste tutorial explica como instalar CUDA 7.0 Production Release en un sistema Debian Wheezy, lo primero que debemos hacer es descargar el driver de gráficos desde el sitio de Nvidia y seleccionar el modelo de la tarjeta de video con la que contemos, en mi caso, tengo un servidor con 2 tarjetas de video Nvidia, la primera es una Geoforce GTX660 y la segunda es una Geoforce GTX650, si no estás seguro de la versión de los drivers que deberías instalar, puedes checar esta información en el siguiente enlace.

http://www.nvidia.com.mx/Download/index.aspx?lang=en-us

El driver requerido que soporta la versión nueva de CUDA 7.0 es 386 o más arriba, asegurate de bajar la última versión para tu tarjeta de video

También, necesitamos descargar el toolkit de Cuda 7.0 del siguiente enlace.

https://developer.nvidia.com/cuda-toolkit

La versión del toolkit que necesitamos descargar es para el archivo RUN de Linux de 64bit
para la última versión de ubuntu, el archivo se llama: cuda_7.0.28_linux.run.

http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run

Ahora necesitamos verificar que tenemos un procesador que soporta GPUs mediante el siguiente comando

cuda7_install.sh

# verify we have a cuda capable gpu
lspci | grep -i nvidia

En mi caso el resultado del comando es algo como esto

cuda7_install.sh

# lscpi output
03:00.0 VGA compatible controller: NVIDIA Corporation Device 11c0 (rev a1)
03:00.1 Audio device: NVIDIA Corporation Device 0e0b (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation Device 0fc6 (rev a1)
04:00.1 Audio device: NVIDIA Corporation Device 0e1b (rev a1)

Si no obtienes ningún resultado entonces deberías verificar que tu hardware esté correctamente instalado, ahora procedemos a verificar nuestra versión de linux por medio de los siguientes comandos

cuda7_install.sh

# Linux version
uname -m && cat /etc/*release

Para este post, estoy utilizando Debian Wheezy por lo que deberías ver algo como lo siguiente

cuda7_install.sh

# version output
x86_64
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"

Ahora necesitamos verificar que tenemos un compilador GCC válido, ésto es requerido para poder instalar el driver de Nvidia, lo checamos mediante el siguiente comando

cuda7_install.sh

# verify gcc version 
gcc --version

Y deberías ver un resultado como el siguiente

cuda7_install.sh

# gcc output
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Si no tienes un compilador GCC válido, instala uno por medio del siguiente comando

cuda7_install.sh

# gcc install
sudo apt-get install build-essential

Antes de proceder con el proceso de instalacion, necesitamos desinstalar cualquier versión de CUDA que pudiera estar instalada, si ésta es la primera vez que instalas CUDA entonces ignora este paso, para desinstalar versiones anteriores de CUDA utiliza el siguiente comando

cuda7_install.sh

# cuda uninstall
sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

Donde X y Y es la versión de CUDA

Si estamos actualizando la versión del driver de CUDA no tenemos que hacer nada ya que el instalador del driver remueve versiones antiguas

Si queremos desinstalar el driver de CUDA utiliza el siguiente comando

cuda7_install.sh

# cuda driver uninstall
sudo /usr/bin/nvidia-uninstall

Una vez completados los paso antes mencionados y teniendo disponible los archivos para la instalación, procedemos a deshabilitar el driver nouveau que es el driver default para debian, hacemos eso mediante la creación del siguiente archivo:

cuda7_install.sh

# edit debian driver configuration file
vim /etc/modprobe.d/disable-nouveau.conf 

Y agregando el siguiente contenido

cuda7_install.sh

# blacklist defualt driver
blacklist nouveau
options nouveau modeset=0

Nota: para verificar que tenemos el driver nouveau corriendo, solo ejecuta el siguiente comando, si imprime algo entonces significa que tenemos corriendo el driver nouveau

cuda7_install.sh

# verify noveau
lsmod | grep nouveau

Después de crear el archivo para bloquear el driver nouveau, procedemos a reinicar la máquina en modo default,

Una vez reiniciado vamos a notar como la resolución del sistema pasó a un nivel inferior y eso significa que el driver defaul nouveau no fue cargado, ahora necesitamos instalar los archivos header para nuestro sistema de nuestro repositorio para poder compilar el driver de Nvidia, hacemos esto mediante los siguientes comandos

cuda7_install.sh

# dependencies
sudo apt-get install linux-headers-$(uname -r)

Después de instalar estos archivos procedemos a remover el driver nouveau completamente de nuestro sistema por medio del siguiente comando

cuda7_install.sh

# remove the nouveau driver completly
apt-get remove --purge xserver-xorg-video-nouveau

Después de remover el driver necesitamos reiniciar el sistema en modo recovery, una vez reiniciado en modo recovery procedemos con la instalación del driver, primero necesitamos saber cual versión de compilador se usó para compilar el kernel, si no sabemos la versión podemos saberlo con el siguiente comando

cuda7_install.sh

# find curr gcc version
cat /proc/version

Y obtendremos algo como lo suguiente

cuda7_install.sh

# version output
Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.54-2

Una vez que sabemos la versión correcta del compilador, necesitamos setearla con un comando export como se muestra a continuación

cuda7_install.sh

# set gcc version
export CC=gcc-4.6

Ahora podemos proceder con la instalación del driver, navegamos a nuestro directorio de descarga y ejecutamos el archivo del driver

cuda7_install.sh

# execute driver install
sudo sh NVIDIA-Linux-x86_64-346.47.run

Una vez que la instalación esté terminada, procedemos a reiniciar la máquina y notaremos como nuestros drivers de nvidia están instalados debido a que la resolución ha subido de nivel, ahora procedemos con la instalación del toolkit de la siguiente manera.

cuda7_install.sh

# execute toolkit install
sudo sh cuda_7.0.28_linux.run

Cuando se nos pida, elegimos NO instalar el driver NVidia ya que éste ha sido instalado satisfactoriamente, y elegimos una ruta de instalación para los ejemplos de código

La última cosa a hacer es compilar los ejemplos de código y correrlos, para hacer esto navegamos al directorio de los ejemplos de código y simplemente ejecutamos make

¡Y eso es todo!

Aquí hay algunos links relacionados con CUDA 7.0

The CUDA getting started manual which covers in deep installation instructions
http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/CUDA_Getting_Started_Linux.pdf

Página de descargas de CUDA
https://developer.nvidia.com/cuda-downloads

The Nvidia Driver downloads page
http://www.nvidia.com.mx/Download/index.aspx?lang=en-us

Algunos blog post sobre CUDA 7.0
http://devblogs.nvidia.com/parallelforall/power-cpp11-cuda-7/
http://devblogs.nvidia.com/parallelforall/cuda-7-release-candidate-feature-overview/

¡Saludos! 🙂
-Yohan

Leave a Reply

Your email address will not be published. Required fields are marked *