Nuevas formas de computación Juan José Andrés Gutiérrez de Telefónica I+D Tecnologías Conozca un interesante análisis del presente de las tarjetas gráficas y sus vínculos con el futuro de la computación. Las tarjetas gráficas actuales cuentan una elevada potencia de cálculo, grandes capacidades de computación y esta optimizadas para cálculos en coma flotante lo que les hace realmente muy útiles en diferentes propósitos para los que originalmente fueron concebidas además de tener, actualmente, un bajo coste. Se han desarrollado técnicas especiales, centradas para la experimentación científica y la simulación. Las GPUs (Graphics Processing Units) se han convertido en procesadores extremadamente flexibles y potentes. INTRODUCCIÓN GPGPU (General-Purpose Computing on Graphics Processing Units) [1] y [2] es una técnica de computación que utiliza las capacidades de las GPUs para resolver problemas diferentes de los tradicionales de procesado de gráficos. Usadas convenientemente pueden obtener unos resultados muy interesantes en la resolución de determinadas tareas de elevada carga computacional. QUE ES UNA GPU Una GPU (termino definido por nVIDIA en 1999 con su conocida tarjeta gráfica GeForce) es un procesador de propósito especifico que se encarga de acelerar la creación (o renderizado) de gráficos liberando así del procesador principal (o CPU, Central Processing Unit) de estas tareas, las cuales tienen un alto coste computacional. Son utilizadas en multitud de dispositivos, además de en ordenadores, como consolas de videojuego, teléfonos móviles, etc. Dadas las características de las tarjetas gráficas actuales como su bajo coste, elevada potencia de cálculo, grandes capacidades de computación paralela y optimización para cálculos en coma flotante son realmente muy útiles para usos diferentes de los que originalmente fueron concebidas. Se han desarrollado técnicas especialmente centradas en simulación y clustering. Hoy en día las GPUs son procesadores extremadamente potentes. Aunque cualquier algoritmo implementado en una CPU es susceptible de implementarse en una GPU, el resultado final, en cuestiones de eficiencia, dista mucho entre ambas. Los algoritmos fácilmente paralelizables muestran un mejor rendimiento en las GPUs mientras que en caso contrario se muestran más eficientes en una CPU. ¿Porque las GPUs están convirtiéndose rápidamente en procesadores tan potentes? Principalmente por dos razones: Económicas. Miles de millones de euros son invertidos, cada año, en el mercado de los videojuegos y esto está impulsando la innovación en este campo. Capacidad de cálculo aritmético. La naturaleza de las GPUs hace sencilla la incorporación de transistores adicionales para elevar la capacidad de cómputo. El objetivo final es aprovechar la excelente relación "coste/capacidad de cálculo", de las GPUs, para así disponer de un coprocesador adicional de gran capacidad de computación. Esta técnica se está extendiendo y haciendo popular no solo por la gran capacidad de cálculo de las GPUs sino también por la gran capacidad de cálculo que tienen las videoconsolas de hoy día y especialmente por su bajo coste. De esta forma es posible montar un potente clúster con varias consolas aprovechando la potencia de sus GPUs, como puede verse en [3]. Las GPUs son cada vez más y más rápidas. La evolución de las GPUs, en cuestión de GFLOPS (gigaFLOPS, Floating point Operations per Second), es mayor que en las CPUs. Mientras que el aumento de la velocidad de procesamiento de una CPU está estimado en 1.4x anual (empíricamente probado por la Ley de Moore) en las GPUs varía entre un 1.7x y un 2.3x de crecimiento anual. La principal crítica que cuenta está técnica es la falta de estandarización y discontinuidad de las arquitecturas de las tarjetas gráficas, lo que puede implicar la adaptación continua de los desarrollos existentes a los nuevos modelos de GPUs para conseguir un mejor rendimiento. Existen no obstante iniciativas e intentos de estandarizar las GPU utilizando conjuntos de instrucciones estándar como el x86 [4]. APLICACIONES En determinados entornos un aumento de la potencia de cálculo proporciona mejoras tanto en tiempo de procesamiento como en disminución de costes. Por ejemplo en el ámbito científico. Investigadores que dependen de las computadoras para realizar y reproducir determinados experimentos y que utilizan simulaciones como parte de su trabajo diario son los principales beneficiados. Es evidente que si un determinado experimento puede realizarse cincuenta o cien veces más rápido supone una mejora más que significativa. Experimentos que habitualmente tardan meses en completarse, con estas técnicas es posible reducir esos tiempos a simplemente horas o días de carga computacional. Esto supone además de hacer los experimentos más rápidamente, hacerlos de una forma más precisa, teniendo en cuenta más variables en juego en los modelos computacionales. El coste, además, es un factor crítico debido a mayor necesidad de computo; el cambio por equipos más potentes supone un desembolso económico no directamente proporcional a la velocidad conseguida sino mucho mayor. Por el contrario en el entorno domestico esta mejora no es tan obvia. La velocidad de los procesadores aumenta cada año y las aplicaciones utilizadas en el entorno domestico siguen siendo similares (dejando a un lado las aplicaciones gráficas que son el principal objetivo de las GPUs). Las aplicaciones no evolucionan tan rápidamente, un procesador de textos sigue tenido la misma utilidad hoy día que hace unos años. Las GPUs cuentan por tanto con potencial, y la GPGPU se puede considerar como una tecnología disruptiva y disponible para aplicaciones de propósito general [5] y con aplicaciones que a día de hoy sorprenden. De hecho, se ha encontrado aplicación a las GPUs para temas diversos como, por ejemplo, para romper la seguridad WPA en redes inalámbricas [6]. Algunas otras aplicaciones para las que se puede utilizar esta técnica son las siguientes: Grid computing (red virtual de computación) Simulaciones físicas Procesado de señal de audio, uso de las GPUs para técnicas de DSP (digital signal processing) Procesado del habla Predicción del tiempo Investigación climática (como por ejemplo investigación del calentamiento global) Modelos moleculares Mecánica cuántica Bioinformática Aplicaciones de predicción financiera y de mercados Imagen médica Visión artificial Redes neuronales Bases de datos Criptografía y criptoanálisis CONCLUSIONES Las GPU tienen su ámbito de aplicación. Los algoritmos fácilmente paralelizables muestran un mejor rendimiento en las GPUs mientras que en caso contrario se muestran más eficientes en una CPU convencional. Es decir que no vale para todo pero si para determinadas aplicaciones, como algunas experimentaciones científicas, el cálculo puede resultar de varios órdenes de magnitud más eficiente respecto a sistemas de computación tradicionales. Interesante resulta la red de supercomputación en grid BOINC, que como se puede ver en [7], utiliza técnicas GPGPU con algunos modelos de GPU para diversas aplicaciones, como por ejemplo para el tratamiento de enfermedades. Aunque el uso de las GPU proporciona bastantes ventajas también cuenta con algunas críticas. La principal de ellas es la falta de un modelo común de desarrollo y evolución de estos procesadores. Esto significa que en función del fabricante y de las versiones del dispositivo la arquitectura cambia y por tanto su modo de programar obligando así a recodificar las aplicaciones para aprovechar toda la potencia y nuevas características que ofrezcan los nuevos modelos, lo que no sucede con las CPU convencionales. Se abre por tanto una nueva vía a la resolución de problemas complejos que dará sus frutos en los próximos años. REFERENCIAS 1. GPGPU. Último acceso noviembre de 2010 aquí. 2. General-Purpose Computation on Graphics Hardware. Último acceso, noviembre de 2010 aquí. 3. GPU Cluster. Último acceso noviembre de 2010 aquí. 4. Larrabee. Último acceso noviembre de 2010 aquí. 5. GPGPUs: Neat Idea or Disruptive Technology? Ultimo acceso, noviembre de 2010 aquí. 6. Elcomsoft uses NVIDIA GPUs to crack WPA2. Último acceso noviembre de 2010 aquí. 7. Boinc Project. Último acceso, noviembre de 2010 aquí. PERFIL DEL AUTOR Juan José Andrés Gutiérrez desarrolla su carrera profesional en Telefónica I+D, donde es Especialista Tecnológico en el área de Vídeo. Ha trabajado con anterioridad en áreas como Hogar Digital, Administración Electrónica y eHealth. Juan José es Ingeniero en Informática, ha cursado estudios de Investigación y Técnicas de Mercado. Actualmente está realizando un Doctorado y cuenta con diversas publicaciones científicas. Su correo electrónico es: jjangu@tid.es