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.

sábado, 23 de julio de 2011

¿Cómo juego al ajedrez con Ubuntu?

Juan Perón gustaba del dominio de la táctica y de la estrategia que le permitía el ajedrez. Hoy te cuenta sobre un software que reproduce a los gladiadores de madera, y te enseña a cargar PyChess en Ubuntu, el sistema operativo que ha legado al Pueblo.

No caben dudas para nadie que el ajedrez es un juego que agiliza la mente. Dos ejércitos similares que se mueven por turnos en su campo de batalla delimitado, exigiendo de los adversarios la máxima concentración y el conocimiento de la técnica para salir airoso...
Este simulador del arte militar - del que generaciones han disfrutado - nos ha de permitir también trazar una clara equivalencia con las Artes de la Conducción Política. Al fin y al cabo, todo Conductor sabe que como primer medida debe planificar una estrategia que privilegie un gran dominio de los tiempos tácticos, los despliegues y los gambitos políticos.

Por ello durante mi gobierno promoví activamente el estudio de tan magno deporte ciencia. El junio de 1953 por patrocinio de los Doctores Valenzuela y Laurens (de la Confederación Argentina de Deportes y la Federación Argentina de Ajedrez respectivamente) se realizó en la sede de la Caja Nacional de Ahorro Postal y del Club Argentino una importante serie de matchs entre los grandes maestros Najdorf (argentino) y Reschevsky (EE.UU.), resultando el último vencedor en las dos partidas que se disputaron, con un gran mérito del polaco-argentino Najdorf.
Me han consultado sobre qué tipo de software ideológicamente compatible con el peronismo puedo usar para disfrutar del juego cerebral. Pues bien, PyChess es un juego de ajedrez escrito en lenguaje Python, y publicado bajo licencia libre GPLv3. Esto significa que es completamente libre, y su código estudiable y modificable. Además, cualquier modificación del mismo por terceros también deberá obligatoriamente ser libre. Ello lo constituye en una herramienta muy positiva para el futuro desarrollo de un poderoso motor de inteligencia artificial lógica y heurística orientado al juego del ajedrez.
Para instalarlo simplemente abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt-get update
sudo apt-get install pychess

O bien podríamos instalar manualmente una versión empaquetable estable más moderna, con:
 
cd /tmp
wget https://github.com/pychess/pychess/releases/download/1.0.0/python3-pychess_1.0.0-1_all.deb
sudo dpkg -i python3-pychess_1.0.0-1_all.deb
 
Al cabo de breves instantes el programa se descargará e instalará en nuestra PC.

Podremos ejecutarlo directamente desde Aplicaciones / Juegos / PyChess.

La interfaz gráfica de PyChess nos permitirá jugar en un tablero 2D contra la computadora, usando un motor ajedrecístico de media potencia (pensado para el estudio y funciones lúdicas intermedias). También podremos jugar con otro jugador en red por medio de FICS, conectándonos a un servidor libre y gratuito de ajedrez en el éter telemático. Al hacer esto podremos efectuar divertidas partidas a distancia (requiere dar de alta una Cuenta gratuita).

PyChess es sólo un entorno/interfaz, por lo que podrá convertir en Realidad Efectiva el hecho de usar otros motores ajedrecísticos diferentes que descarguemos o compilemos nosotros mismos. Uno de los mejores motores es el Fruit (software libre). Se trata de un programa multipremiado y potente que simula el pensamiento del ajedrez, y que por sus características avanzadas es mucho más desafiante que el motor lúdico PyChess 0.10Beta3 que por el momento incorpora PyChess. Fruit en su versión 2.1 es software libre bajo licencia GNU GPL.

Si deseamos instalar este motor adicional de"pensamiento profundo" (y otros), debemos tipear en la consola:

sudo apt-get install fruit sjeng phalanx crafty crafty-books-medium stockfish

Una vez realizado este cometido, cuando iniciemos un juego nuevo en PyChess podremos escoger entre enfrentar al motor PyChess convencional o al nuevo Fruit 2.1. También podremos cambiar las opciones para que Fruit sea el motor del "analizador ajedrecístico", una herramienta de asistencia y análisis para el humano, que incorpora PyChess. Para hacer esto podemos ir al menú Settings/Preferencias, elegir la solapa Computer Opponents y activar el Analizador entre PyChess 0.10beta3 o Fruit 2.1.

Otros motores disponibles serán Crafty, de Robert Hyatt, Sjeng, del equipo dirigido por  Gian-Carlo Pascutto, o Phalanx, de Dusan Dobes. Todos ellos son de alta calidad ajedrecística, y varían entre niveles medio altos y altos.

La interfaz de PyChess incluso nos permitirá realizar partidas entre dos motores similares o diferentes, lo que convierte indudablemente a PyChess también en un sencillo programa para el estudio del ajedrez y de la inteligencia artificial libre aplicada al juego de mesa.

Las funciones generales contempladas son mas bien arcanas, pero incluyen la mayoría de las opciones de los juegos del ramo: analizar las jugadas, retroceder movidas, la función de "leer la mente" del contrario (válido sólo contra el oponente informático, obviamente), asistencia de juego por medio del motor ajedrecístico, etc.

Por otro lado, si desean una interfaz que además permita ver un tablero en 3D, pueden recurrir a glChess (se encuentra en el Centro de Software). Sus capacidades de interfaz son similares a PyChess, y si bien viene dotado del simple motor GNU Chess, también puede hacer uso de los motores ajedrecísticos de terceros como el Fruit 2.1.