Procesadores gráficos como supercomputadores de consumo: Intro

Como procesadores gráficos de consumo nos referimos a los chips que incorporan las habituales tarjetas gráficas incluidas en nuestros ordenadores de sobremesa. La misión fundamental de estos sistemas es la de conseguir una imagen final en pantalla, y para la mayor parte de las aplicaciones diarias (gestor de correo electrónico, navegación por Internet, editor de textos, hoja de cálculo, etc.) el procesador gráfico apenas realiza un cómputo exigente. Por esta razón, muchos fabricantes y montadores de equipos finales incluyen tarjetas gráficas integradas, de bajo consumo, de pequeñas dimensiones, de bajo coste y de gran funcionalidad.

 

Sin embargo, cada vez es mayor la incertidumbre del usuario respecto a las posibilidades de su equipo en el futuro a corto plazo, si necesitará mayor poder de cómputo, si necesitará más velocidad, si necesitará mejores prestaciones porque las aplicaciones que tenga que utilizar así se lo requieran. Este hecho también se pone de manifiesto a la hora de elegir una tarjeta gráfica, quizá en el futuro (o en el presente) el propio sistema operativo realice tareas gráficas inusuales, muy exigentes, o el navegador web, o quizá queramos reproducir vídeo de alta definición en una pantalla plana de 42”, quizá queramos experimentar la sensación del último videojuego que tanto revuelo ha hecho en Times Square de Nueva York el día de su lanzamiento al mercado, etc. Bajo estas circunstancias, quizá queramos adquirir una tarjeta gráfica de gama media (50-250€), pero que asegure cierto margen de extensibilidad de uso futuro.

 

A los procesadores gráficos de este tipo de tarjetas les hemos hecho un hueco en el webblog de Supercomputación de Consumo porque, como veremos en una serie de posts, en especiales circunstancias pueden ayudar a procesar más rápido, o energéticamente de forma más eficiente, soluciones a problemas de propósito general y que nada, o poco, tengan que ver con la visualización de vídeo, de trepidantes escenas de videojuegos, o con la renderización de espectaculares efectos visuales de las ventanas de nuestro sistema operativo. Pero ¿qué pasa con aquellas tarjetas gráficas que caen en el segmento de alta gama? Estas tarjetas están especialmente diseñadas para sacar máximo partido a las más avanzadas tecnologías software de visualización, y especialmente de los videojuegos. Resoluciones de alta definición en monitores de grandes dimensiones y refresco inmediato del videojuego a máxima calidad. Estas tarjetas, que pueden costar alrededor de 600€ incluyen muchos más transistores y unidades de cómputo que el mejor de los procesadores centrales (CPU) de consumo. La cuestión es, ¿tanto poder de cómputo solo para ser utilizado de manera exigente en videojuegos?, ¿se está desperdiciando mientras leo las noticias en Internet, reviso el correo o hago un escrito con mi editor de texto?

 

Los fabricantes de procesadores gráficos se han dado cuenta de que desde finales de los años 90 algunos investigadores han incidido en utilizar este hardware con propósitos científicos. Estos investigadores han tratado de acelerar tareas de cómputo de maneras no triviales buscando paralelismos entre posibles soluciones a sus problemas y las soluciones ofrecidas por el hardware gráfico a la hora de renderizar imágenes. Entendiendo la forma de procesar de este hardware cuando ejecuta las tareas para las que fue diseñado, se puede conseguir una solución eficiente para tareas impropias de este dispositivo.

 

Los procesadores gráficos basan su poder de cómputo en la posibilidad de realizar multitud de operaciones individuales, y de manera independiente, para una gran cantidad de datos. Básicamente es lo que ocurre cuando se renderiza una imagen compuesta por gran cantidad de datos (píxeles) expresada a partir de una descripción 3D compleja, como la que pueda generar una aplicación de diseño gráfico, o la de un modelo de una escena 3D de un videojuego. ¿Qué etapas de procesamiento atraviesa esa descripción 3D inicial para conseguir reflejar una imagen 2D en pantalla?, ¿es posible acceder a esas etapas de procesamiento para aprovechar los recursos en la búsqueda de soluciones de problemas de propósito general?, la respuesta es afirmativa, aunque no para cualquier aplicación.

 

Pero sigamos descubriendo las posibilidades, fortalezas y debilidades del hardware gráfico para ser usado como supercomputadores de consumo. En general, las ventajas de una GPU (Graphics Processing Unit, o unidad de procesamiento gráfico en contraposición de CPU, Central Processing Unit) se pueden articular en seis puntos claves:

  1. Es hardware de consumo: una tarjeta gráfica de última generación es fácil encontrarla en unos grandes almacenes, a diferencia de una tarjeta programable tipo FPGA.
  2. Es hardware de altas prestaciones: atendiendo a una variedad de parámetros, se puede demostrar que estos procesadores pueden realizar más operaciones por segundo que muchos procesadores de propósito general, tienen mayores anchos de banda a memoria (pueden leer más datos en menos tiempo) y cada vez tienen mayor capacidad (más memoria onboard)
  3. Es hardware de bajo coste: teniendo en cuenta el punto anterior sobre la capacidad de cómputo, el ratio unidad de cómputo vs. precio es significativamente más bajo, así como el ratio unidad de cómputo vs. consumo energético.
  4. Es hardware programable: desde finales de los años 90, algunas etapas de procesamiento se han visto modificadas para permitir su personalización a través de códigos externos, que los desarrolladores pueden modificar a su antojo para que la tarjeta ejecute sus instrucciones sobre entradas de datos de interés. El creciente interés en este aspecto ha posibilitado la creación de determinados lenguajes de programación de alto nivel para codificar estos programas.
  5. Es un buen procesador de flujos de datos: viene de la idea de stream processor, que por su independencia de cómputo puede realizar múltiples ejecuciones de la misma instrucción sobre múltiples datos de manera simultánea y mantener este ritmo para todos los datos de la colección sin necesidad de intervenir directamente. El objetivo es ocultar el procesamiento en la tarjeta gráfica mientras la CPU queda libre para otro tipo de tareas.
  6. Rápida evolución: Gordon E. Moore advertía en 1965 que el ritmo de crecimiento del número de transistores por circuito integrado era exponencial y que esta tendencia continuaría en el tiempo. De forma general, la llamada Ley de Moore establece que el número de transistores en un procesador se duplica cada 18-24 meses. En el caso de los procesadores gráficos, por la facilidad de la integración de transistores dedicados a cómputo, así como por el empuje de la industria de los videojuegos, la tendencia es más acusada, llegando a duplicar e incluso triplicar la citada Ley de Moore. El hardware gráfico evoluciona muy rápido, y una solución que actualmente no consiga un gran rendimiento puede ser significativamente superior en pocos meses.

 

 

 

Pero no todo es perfecto, en su inicio, la programación de este tipo de hardware para tareas de propósito general era compleja, se requería conocimiento de bajo nivel del propio hardware, de los juegos de instrucciones soportados, etc. A medida que este uso se ha hecho más popular han aparecido nuevos interfaces para soportar características propias de una buena abstracción. No obstante, no nos engañemos, sacar máximo partido a este hardware continúa siendo una tarea compleja, aunque sacar un cierto beneficio respecto a la solución básica en CPU pueda ser algo relativamente sencillo para determinados procesos.

 

Abordaremos poco a poco cada uno de estos puntos así como algunas de las posibilidades que se están abriendo paso debido a la masiva implantación de esta tecnología de consumo.

Etiquetas: , , , , ,

Si te gustó esta entrada anímate a escribir un comentario o suscribirte al feed y obtener los artículos futuros en tu lector de feeds.

Comentarios

exelente dispositivo informenme de los avances

lo mejor en procesador de graficos

[...] http://www.madrimasd.org/blogs/supercomputacion_de_consumo/2008/10/16/103763 .addthis_toolbox.addthis_pill_combo a { float: left; margin-right: 4px; } .addthis_toolbox.addthis_pill_combo a.addthis_button_tweet, .addthis_toolbox.addthis_pill_combo a.addthis_counter { margin-top: -2px; } .addthis_button_compact .at15t_compact { margin-right: 4px; float: left; } Compartir Etiquetas: General [...]

Como procesadores gráficos de consumo nos referimos a los chips que incorporan las habituales tarjetas gráficas incluidas en nuestros ordenadores de sobremesa. La misión fundamental de estos sistemas es la de conseguir una imagen final en pantalla, y para la mayor parte de las aplicaciones diarias (gestor de correo electrónico, navegación por Internet, editor de textos, hoja de cálculo, etc.) el procesador gráfico apenas realiza un cómputo exigente. Por esta razón, muchos fabricantes y montadores de equipos finales incluyen tarjetas gráficas integradas, de bajo consumo, de pequeñas dimensiones, de bajo coste y de gran funcionalidad.

Sin embargo, cada vez es mayor la incertidumbre del usuario respecto a las posibilidades de su equipo en el futuro a corto plazo, si necesitará mayor poder de cómputo, si necesitará más velocidad, si necesitará mejores prestaciones porque las aplicaciones que tenga que utilizar así se lo requieran. Este hecho también se pone de manifiesto a la hora de elegir una tarjeta gráfica, quizá en el futuro (o en el presente) el propio sistema operativo realice tareas gráficas inusuales, muy exigentes, o el navegador web, o quizá queramos reproducir vídeo de alta definición en una pantalla plana de 42”, quizá queramos experimentar la sensación del último videojuego que tanto revuelo ha hecho en Times Square de Nueva York el día de su lanzamiento al mercado, etc. Bajo estas circunstancias, quizá queramos adquirir una tarjeta gráfica de gama media (50-250€), pero que asegure cierto margen de extensibilidad de uso futuro.

A los procesadores gráficos de este tipo de tarjetas les hemos hecho un hueco en el webblog de Supercomputación de Consumo porque, como veremos en una serie de posts, en especiales circunstancias pueden ayudar a procesar más rápido, o energéticamente de forma más eficiente, soluciones a problemas de propósito general y que nada, o poco, tengan que ver con la visualización de vídeo, de trepidantes escenas de videojuegos, o con la renderización de espectaculares efectos visuales de las ventanas de nuestro sistema operativo. Pero ¿qué pasa con aquellas tarjetas gráficas que caen en el segmento de alta gama? Estas tarjetas están especialmente diseñadas para sacar máximo partido a las más avanzadas tecnologías software de visualización, y especialmente de los videojuegos. Resoluciones de alta definición en monitores de grandes dimensiones y refresco inmediato del videojuego a máxima calidad. Estas tarjetas, que pueden costar alrededor de 600€ incluyen muchos más transistores y unidades de cómputo que el mejor de los procesadores centrales (CPU) de consumo. La cuestión es, ¿tanto poder de cómputo solo para ser utilizado de manera exigente en videojuegos?, ¿se está desperdiciando mientras leo las noticias en Internet, reviso el correo o hago un escrito con mi editor de texto?

Los fabricantes de procesadores gráficos se han dado cuenta de que desde finales de los años 90 algunos investigadores han incidido en utilizar este hardware con propósitos científicos. Estos investigadores han tratado de acelerar tareas de cómputo de maneras no triviales buscando paralelismos entre posibles soluciones a sus problemas y las soluciones ofrecidas por el hardware gráfico a la hora de renderizar imágenes. Entendiendo la forma de procesar de este hardware cuando ejecuta las tareas para las que fue diseñado, se puede conseguir una solución eficiente para tareas impropias de este dispositivo.

Los procesadores gráficos basan su poder de cómputo en la posibilidad de realizar multitud de operaciones individuales, y de manera independiente, para una gran cantidad de datos. Básicamente es lo que ocurre cuando se renderiza una imagen compuesta por gran cantidad de datos (píxeles) expresada a partir de una descripción 3D compleja, como la que pueda generar una aplicación de diseño gráfico, o la de un modelo de una escena 3D de un videojuego. ¿Qué etapas de procesamiento atraviesa esa descripción 3D inicial para conseguir reflejar una imagen 2D en pantalla?, ¿es posible acceder a esas etapas de procesamiento para aprovechar los recursos en la búsqueda de soluciones de problemas de propósito general?, la respuesta es afirmativa, aunque no para cualquier aplicación.

Pero sigamos descubriendo las posibilidades, fortalezas y debilidades del hardware gráfico para ser usado como supercomputadores de consumo. En general, las ventajas de una GPU (Graphics Processing Unit, o unidad de procesamiento gráfico en contraposición de CPU, Central Processing Unit) se pueden articular en seis puntos claves:
Es hardware de consumo: una tarjeta gráfica de última generación es fácil encontrarla en unos grandes almacenes, a diferencia de una tarjeta programable tipo FPGA.
Es hardware de altas prestaciones: atendiendo a una variedad de parámetros, se puede demostrar que estos procesadores pueden realizar más operaciones por segundo que muchos procesadores de propósito general, tienen mayores anchos de banda a memoria (pueden leer más datos en menos tiempo) y cada vez tienen mayor capacidad (más memoria onboard)
Es hardware de bajo coste: teniendo en cuenta el punto anterior sobre la capacidad de cómputo, el ratio unidad de cómputo vs. precio es significativamente más bajo, así como el ratio unidad de cómputo vs. consumo energético.
Es hardware programable: desde finale

[...] La tecnología NVIDIA CUDA es una tecnología de cómputo paralelo que aprovecha la gran potencia de cálculo de las tarjetas gráficas (en realidad de sus procesador, GPU, de unidad de procesamiento gráfico) para acelerar la ejecución de aplicaciones científicas. Surge como forma de simplificar la programación de estos procesadores especiales, al igual que existen lenguajes de programación (C, Pascal, Fortran, Java,…) para los tradicionales procesadores centrales (CPUs, de unidades de procesamiento centrales), en los que siempre se han ejecutado las aplicaciones. En determinados casos, en los que la independencia de los datos a procesar y la cantidad de ellos son enormes, la potencia de las GPUs puede superar con creces a la de la CPU, además de ser energéticamente más eficientes por estrategias de diseño. NVIDIA CUDA surgió del increíble éxito que tuvieron los primeros programas que, haciendo uso de la potencia del procesador gráfico, mejoraban el rendimiento y se volvían más rápidos. Algunas de las nociones para entender este éxito lo pusimos por este blog hace unos años. [...]


*