Nvidia CUDA
Estoy leyendo un artículo de la última Linux Journal, referido a la tecnología CUDA, que sacó hace un tiempito nomás NVidia. Básicamente se trata de una plataforma de software (compilador + libs + soporte en hardware) para que cualquier programador pueda acceder al enorme poder de cálculo que tienen las tarjetas gráficas actuales, que es mucho mayor que las CPUs que se utilizan todos los días; se comenta que la mejora de performance es de ¡uno a dos órdenes de magnitud como regla general!
Ya hace un tiempo vengo leyendo que están utilizando CUDA para romper WPA/WPA2, comprimir videos, procesamiento paralelo, y hasta acelerar las operaciones de cálculo de un RAID[1]. ¡Me parece bárbaro!, al fin una nueva "cosa" con la cual jugar, usar y aprender.
En primera instancia creo que la vuelta de la tecnología del viejo y querido "coprocesador matemático" viene muy bien, más cuando la arquitectura x86/x86_64 no deja muchas opciones más al momento de escalar; me parece que es un gran mérito de Nvidia poner esta idea primero (masivamente) en el mercado, y como se ve lo viene explotando a pleno (prensa, fama y fortuna, je).
Si no vieron de qué se trata, péguense una vuelta por el sitio/showroom virtual de CUDA, que está buenísimo. En cuanto a lo técnico, resumo:
- No es software libre, pero sí es gratuito (free as in beer, not as in speech).
- Ya está disponible para Linux (sólo x86/x86_64) y Windows. Mac está en camino (ahora en forma de beta descargable).
- Si bien es ideal para usarlo desde C y C++, ya hay bindings para usarlo desde Matlab y ¡Python! :-D
- Si bien es recomendable usar una tarjeta gráfica soportada (Nvidia 8000 o mayor), puede utilizarse en forma emulada.
- Compatibiliad binaria: una vez que genero un programa CUDA, funciona en cualquier tarjeta soportada por la plataforma.
- Ojo, no es "transparente" al programador, ni "mágico". Hay que leer la documentación, entender cómo funciona la arquitectura y escribir desde cero.
Ambos parecen tener la idea de empezar a fabricar CPUs con varios cores especializados, al estilo del pionero Cell, pero manteniendo la milenaria y vetusta arquitectura x86. Lo bueno es que esta solución, aunque más compleja, me atrevo a decir que será más efectiva ya que no tendrá el cuello de botella del puerto PCI-Express; aunque parece que falta mucho para ver algo concreto, y es atendible que CUDA tenga como objetivo "sólo multiprocesamiento masivo". El tiempo dirá cómo evoluciona la cosa.
Y bueno... hago público mi bajón de no tener una Nvidia serie 8000 y hacer pruebas. :-(
Saludos
Marcelo
[1] Puede ser aplicado, por ejemplo, al módulo md de Linux, el que permite que hagamos RAID por software.
4 comentarios:
No soy programador ni nada parecido. Pero queda clarísimo el concepto de lo que es CUDA y lo que significa tener al alcance ese poder de procesamiento, que antes estaba relegado a los cálculos relacionados con la gráfica. Le heché un vistazo al showroom de CUDA en Nvidia. Simplemente fabuloso pensar el tipo de aplicaciones que podremos vislumbrar de ahora en adelante, el acortamiento en el tiempo de ciertos procesos y la velocidad de respuesta. Cuento con una 8600 GT y estaba viendo que aplicaciones "probar" a manera de curioso.
Muero por una aplicacion de compilado de DVDs via CUDA (si es posible, asumo que si, desde la ignorancia del usuario comun) xD que una pelicula de 700Mb AVI-Xvid se pase a DVD-Video en media hora. :D Aun con un AMD X2 4600+ y 2GB RAM DDR2 toma como una hora y media el proceso de conversión!!!
Según uno de los enlaces que colgué en el post, no hace falta que esperes. Este programa aprovecha CUDA para comprimir videos:
http://badaboomit.com/
Saludos
Marcelo
Nuuuuu! Que zarpadooo! o_O !!! JAJAJA, muchas gracias. Ahora tengo que encontrar algo para Ubuntu! u_U
Pude al menos, instalarlo en Ubuntu! :D
http://ubuntuforums.org/showthread.php?t=960500
Gracias por la info!
Publicar un comentario