2 de julio de 2010

¿Qué es eso de la aceleración por GPU?


Últimamente estamos hablando bastante de la aceleración por hardware o por GPU. Que si Internet Explorer 9 tendrá aceleración por GPU, que si Firefox usará aceleración por GPU, VLC decodifica por medio de la GPU... Pero, ¿qué es eso de la aceleración por GPU?

Realmente, esto no es algo nuevo. La aceleración por hardware se usa desde hace mucho en aplicaciones con una gran carga de gráficos, como por ejemplo, programas CAD, de diseño 3D o en videojuegos. Lo que pasa es que ahora otros programas que en un principio no trabajan tanto con gráficos, como los navegadores o reproductores de vídeo, también se están aprovechando de esta característica.


Antes de que me líes más. ¿Qué es la GPU?

Chip GPU. Fuente: Wikimedia.Por sus siglas, la GPU es la Graphics Processing Unit, o unidad de procesamiento de gráficos. Es un chip que está en la tarjeta gráfica del ordenador, puedes ver uno en la imagen. Normalmente, llevan un ventilador o disipador encima para evitar que se sobrecaliente.

¿Qué ventajas aporta la aceleración por GPU?

La CPU es una unidad de procesamiento general, está preparada para operaciones matemáticas y lógicas para que con ella podamos realizar casi cualquier tarea a una velocidad más que suficiente. El problema viene cuando nos metemos en programas con una carga gráfica muy grande, como pueden ser videojuegos o programas de diseño 3D. Estos programas están continuamente procesando formas y texturas, y hacerlo por medio de la CPU no suele ser muy buena idea, ya que no está específicamente diseñada para estas tareas. Para eso está la GPU, que aporta varias ventajas.

La primera y más evidente: que tenemos un procesador más. Además, este procesador está específicamente diseñado para trabajar con gráficos, con funciones específicas y una arquitectura muy basada en el procesamiento en paralelo. En pocas palabras, con la aceleración por GPU lo que hacemos es quitar trabajo a la CPU y dárselo a la GPU, que lo hará más rápido y mejor.

Hay casos de programas que usan aceleración por GPU, pero sin embargo no trabajan con formas, como por ejemplo los reproductores de vídeo. Entonces, ¿para qué usan la GPU? Resulta que algunas tarjetas gráficas soportan la decodificación por hardware. Es decir, dan la posibilidad de decodificar un vídeo por medio de un chip integrado, que lo hace más rápido y quitando carga a la CPU.


Otras aplicaciones también usan la aceleración por GPU. Desde la versión CS4, Photoshop y el resto de la suite de Adobe aprovecha la potencia de la tarjeta gráfica para aumentar el rendimiento de la aplicación, sobretodo cuando trabaja con gráficos 3D. Google Earth también tiene aceleración por GPU, y, en general, todos los programas que trabajen con 3D.

También hay programas que aprovechan la capacidad de decodificación por hardware de algunas tarjetas. La última versión de VLC o el reproductor Flash, por ejemplo, son capaces de decodificar vídeo H.264 por medio de la tarjeta gráfica, mejorando mucho el rendimiento de la reproducción.

Todo esto que dices es muy bonito, pero…

Sí, claro que hay inconvenientes, pero no muchos comparados con las ventajas en rendimiento. La mayoría de los ordenadores vienen con tarjetas gráficas integradas y lo suficientemente potentes como para soportar bien la aceleración por GPU. Los usuarios apenas tendremos que hacer nada para poder usar estas características, y de hecho puede que las estés usando en bastantes programas sin darte apenas cuenta. Siempre que veas un programa con alguna opción para configurar DirectX u OpenGL está casi seguro usando la GPU (Direct3D, dentro de DirectX, y OpenGL son librerías para trabajar con gráficos en la GPU).

En resumen, la aceleración GPU es algo muy sencillo. Se trata de derivar el trabajo con gráficos a quien está especializado en ello: a la tarjeta gráfica. De esta forma, mejoramos el rendimiento por dos vías: quitando carga a la CPU y usando los procedimientos de la tarjeta gráfica, que son más rápidos y eficientes.

No hay comentarios: