martes, 26 de julio de 2011

¿Cómo instalo CUDA para ver videos acelerados por hardware en Ubuntu 10.10?

Ya desde Abril de 1956 Juan Perón escribe desde el número 2-52 de la Calle 58 - su exilio en Bella Vista, Panamá - planificando desde el exterior acciones que le permitieran retornar a la Argentina. Su objetivo: restablecer al Pueblo el verdadero poder usurpado por la autoproclamada Revolución Libertadora. En una de estas epístolas que constituyen verdaderos documentos históricos, Perón explica también como instalar CUDA en Ubuntu 10.10.

(...)
"El plan que he concebido para comenzar su ejecución prevé ampliar lo que dije hace tres meses, la resistencia pasiva. Usted sabe que dentro del secreto que han de tenerse en estas cosas, hoy podemos decir que las grandes líneas son las siguientes:
  1. Resistencia Pasiva (sabotaje y acciones pasivas) para desgastar moral y materialmente a la dictadura y descomponer sus fuerzas, preparando así su derrumbe ulterior.
  2. Entretanto, organización y preparación de nuestras fuerzas para accionar con unidad de concepción en el momento y lugares oportunos.
  3. Preparación de la acción decisiva mediante la paralización total del país y el levantamiento civil y militar.
Las noticias que me llegan del Uruguay son buenas y optimistas, pues le está llegando el agua al cuello a la dictadura. Es menester que se haga llegar la consigna permanente de sabotaje y resistencia pasiva que ahora debe ser más intensa que nunca. El cuento de la poliomielitis no debe impresionarnos a nosotros pues ha sido una jugarreta de la dictadura. Hacer llegar a la gente la orden de continuar todas las acciones de resistencia es fundamental en estos momentos, así lo he ordenado en todas partes. Si la resistencia afloja por cualquier motivo, la dictadura respirará y eso no nos conviene de ninguna manera. No olvidemos que esto es un juego de vivos, y que en ese juego, gana el que puede pasar de tonto sin serlo...

Por otro lado, es de vivos instalar CUDA en Ubuntu. CUDA es la arquitectura de procesamiento paralelo que utiliza las GPU de nVidia para correr programas y también asistir en su ejecución. Esto permite ampliar sin duda las posibilidades de ejecución de programas que hagan uso de esta tecnología: juegos, aplicaciones científicas, aplicaciones de procesamiento matemático intensivo, etc. Me han preguntado si se puede instalar CUDA para usarlo en Ubuntu para acelerar videos o desarrollar programas, y yo he de decirles que si, se puede.


Este tipo de programación requiere de un adaptador de video con procesadores compatibles con CUDA. Yo utilizaré para este ejemplo la nVidia GTX275, que tan buenos resultados ofrece en Ubuntu 10.10. Principalmente usaremos la tecnología para ver videos acelerados, pero quien se anime podrá programar sus propias aplicaciones usando el SDK o kit de desarrollo.

Vamos a Aplicaciones / Accesorios / Terminal y el la consola ingresamos los siguientes Comandos de Organización descargaremos el megapaquete CUDA 4.0:

sudo add-apt-repository ppa:aaron-haviland/cuda-4.0
sudo apt-get update
sudo apt-get upgrade


Recordemos que se instalará la paquetería en el kernel, modificándolo (al momento de la carta, a la versión 2.5.35-30 generic). También se descargará el último controlador nVidia (al momento, el 270.41.19 DKMS).

Luego dependiendo del tipo de arquitectura que utilice, ingresamos los siguientes comandos:

Si usamos Ubuntu 10.10 de 32 bits usamos:
sudo apt-get install nvidia-cuda-gdb nvidia-cuda-toolkit nvidia-compute-profiler lib32npp4 nvidia-cuda-doc nvidia-current-modaliases lib32cudart4 lib32cublas4 lib32cufft4 lib32cusparse4 lib32curand4 nvidia-current nvidia-opencl-dev nvidia-current-dev nvidia-cuda-dev nvidia-kernel-common opencl-headers

En el caso de utilizar Ubuntu de 64 bits el comando será:
sudo apt-get install nvidia-cuda-gdb nvidia-cuda-toolkit nvidia-compute-profiler libnpp4 nvidia-cuda-doc nvidia-current-modaliases libcudart4 libcublas4 libcufft4 libcusparse4 libcurand4 nvidia-current nvidia-opencl-dev nvidia-current-dev nvidia-cuda-dev nvidia-kernel-common opencl-headers

Esta paquetería redunda en aproximadamente 490MB de información, por lo que llevará un tiempo su descarga del éter telemático.

Opcionalmente, y únicamente si no teníamos ningún controlador de video nVidia instalado previamente en el sistema, ingresamos el siguiente Comando de Organización (de lo contrario, omitimos este paso):

sudo nvidia-xconfig

Ahora debemos - y es importante hacerlo - reiniciar el sistema. A la vuelta debe arrancar sin problemas.

Finalmente, si lo deseamos, podemos instalar también el SMPlayer, por ser un reproductor fuertemente peronista que podrá golpear a la dictadura por medio de su capacidad de usar la aceleración VPau.

Para hacerlo ingresamos el siguiente Comando:

sudo apt-get install smplayer smplayer-translations smplayer-themes

Para ejecutar este reproductor vamos a Aplicaciones / Audio y Video / SMPlayer. Luego podemos activar la aceleración en el menú Opciones / Preferencias y en el cuadro que surge elegimos / Controlador de Salida, y reemplazamos la opción "xv" escribiendo en la casilla "vdpau".

Si deseamos compilar software para que corra bajo las librerías CUDA, podemos hacerlo, y ello requiere ser avezados. nVidia pone a disposición un entorno de desarrollo (SDK) para GNU/Linux, cuyo nombre es gpucomputingsdk_4.0.13_linux.run.

a) instalar gupcomputingsdk con el siguiente Comando de Organización, aceptando las opciones :

sudo apt-get install freeglut3-dev libxi-dev libXmu-dev

Debemos descargar el Toolkit CUDA que corresponda a nuestra versión. El Toolkit pesa unos 125 MB aproximadamente.

Si tenemos Ubuntu 10.10 de 32 bitios lo bajamos de aquí. Si en cambio usamos Ubuntu 10.10 de 64 bitios lo bajamos de aquí. Y si tenemos otras distribuciones diferentes, podemos buscarlas aquí.

Una vez descargado el empaquetado precompilado, debemos darle permisos de ejecución y ejecutarlo.

Por ejemplo, en el caso de la versión de 64 bitios, sería con el siguiente Comando de Organización:
sudo chmod +x cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
sh cudatoolkit_4.0.17_linux_64_ubuntu10.10.run


Luego tipeamos

sudo mkdir /usr/lib/include
sudo ln -s /ust/lib/include/thrust /usr/lib/include/

Y agregaremos el path de la nueva localización de confianza en el archivo common/common.mk. Lo hacemos con

sudo nano ~/NVIDIA_GPU_Computing_SDK/C/common/common.mk

y en la línea 64 agregamos "-I/usr/lib/include" de modo que cambie de la instrucción original:
INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/inc -I$(SHAREDDIR)/inc

...y quede modificada así:
INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I/usr/lib/include -I$(COMMONDIR)/inc -I$(SHAREDDIR)/inc

Ahora compilamos el código de ejemplo con los siguientes Comandos de Organización:

cd NVIDIA_GPU_computing_SDK/C
make

Los ejecutables del código compilado irán a parar a la carpeta ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/

Para ejecutar esos códigos (por ejemplo, los programas nbody y deviceQuery) solamente debemos situarnos allí y tipear:

./nobody
./deviceQuery

Y así con cualquier programa que desarrollen.

2 comentarios:

  1. Buenas General,

    Quería dejarle una pregunta.
    Como usted sabe el peronismo es un movimiento gregario. Yo a diferencia de otros compañeros no uso Nvidia, sino ATI. La pregunta es ¿CUDA funciona en ATI? Si es así ¿Puede guiarnos con su luz historica hacia la aceleración pero con placas ATI?

    Un abrazo mi General,
    A la espera de su retorno,
    Gonzalo

    ResponderEliminar
  2. Estimado Gonzalo:

    El Justicialismo cuenta con una doctrina de bien social, con la cual, como antorcha, iluminaremos la senda de los hombres de bien.

    Como poseedor de ATI, he de comentarle que CUDA no corre en este tipo de procesadores gráficos paralelizados. Obviamente la estructura de programación es relativamente cerrada en estos entornos, por lo cual se requiere aún de los llamados SDK (Software Developer Kits, un conjunto de herramientas especializadas encofradas que nos ofrece el fabricante, en este caso nVidia, para hacer uso de algunas de las posibilidades documentadas de la GPU de su propia línea de productos.

    ATI en cambio ofrece otra tecnología propietaria, llamada en su momento ATI Stream Computing, y hoy renombrada a AMD App. Básicamente consiste en el mismo derrotero: establecer a la GPU como una fuente inagotable de creación, y dotar al usuario de paquetes de programación encapsulados o cerrados en forma de SDKs. En el caso de ATI/AMD se llama AMD App SDK, y consta de un lenguaje de programación denominado Brook+ que funciona sobre una capa de abstracción.

    Existe versión 1.4 para Línux (precompilada para RedHat y OpenSUSE, pero debería poder portarse debianizados también). Existe en versiones tanto en 32 como en 64 bits. Mas info encontrarás en http://developer.amd.com/archive/gpu/ATIStreamSDKv1.4Beta/pages/default.aspx#five

    Ten en cuenta que tanto CUDA como su contrapartida AMD App no se refieren exclusivamente a la aceleración de video, sino utilizar lenguajes de programación y kits de desarrollo para utilizar la GPU de tu adaptador de video (sobre todo su capacidad de proceso matemático en paralelo) para realizar otras tareas que no tienen que ver con el procesamiento o decodificación gráfica. Por ejemplo, CUDA o ATI App se pueden emplear para atacar claves WPA2 de manera más veloz (descriptografía brutal), cálculo fractal intensivo, operaciones de coma flotante, y demás tareas que requieran cierto tipo de acciones matemáticas complejas repetitivas o multihilo.

    Si lo que buscas es mundano video acelerado para ATI, ya se ha cubierto sobradamente por el Justicialismo: http://ubuntuperonista.blogspot.com/2011/06/como-habilito-la-aceleracion-de-video.html

    Atte.

    Juan Perón

    ResponderEliminar