T.E.L: 5 min. 17 seg.
Así como nuestra tarjeta de video forma parte del universo, también es posible usar sus capacidades de cálculo para estudiar el cosmos, procesar imágenes y jugar.
La unidad de procesamiento gráfico o GPU (acrónimo del inglés graphics processing unit) es un procesador dedicado exclusivamente al procesamiento de gráficos, para aligerar la carga de trabajo del procesador central en diversas aplicaciones. ATI (ahora adquirida por AMD) y NVIDIA son las dos casas más grandes productoras de tarjetas de video, que ahora brindan productos con capacidades muy importantes, como las tarjetas compatibles con CUDA, que veremos aquí. Pero también AMD tiene lo suyo.
CUDA son las siglas de (Compute Unified Device Architecture) que hace referencia tanto a un compilador como a un conjunto de herramientas de desarrollo creadas por NVIDIA.
Funciona en todas las GPUs NVIDIA de la serie G8X en adelante, incluyendo GeForce, Quadro y la linea Tesla (ver productos compatibles).
CUDA intenta explotar las ventajas de las GPUs utilizando el paralelismo que ofrecen sus múltiples núcleos.
¿Para qué se usa CUDA?
El sitio Cuda Zone permite recorrer un amplio conjunto (casi 700) de usos diferentes que los desarrolladores han creado. Aquí listamos algunas de las formas en que la astronomía y cosmología están usando CUDA para estudiar el cosmos:
Correlación de señales en radioastronomía
Rob van Nieuwpoort, de ASTRON, realizó un trabajo de comparación de diferentes procesadores:
Un reciente desarrollo en radioastronomía es reemplazar las antenas tradicionales con muchas antenas pequeñas. Las señales son combinadas para formar un gran telescopio virtual. El enorme flujo de datos es filtrado, a través de un proceso llamado correlación cruzada para quitar el ruido. Esto es especialmente desafiante porque la demanda computacional crece en forma cuadrática y hay una intensa entrada y salida de datos. El telescopio LOFAR, por ejemplo, producirá más de 100 terabytes por día. Una tendencia reciente es correlacionar en software en vez de en hardware dedicado para incrementar la flexibilidad y reducir los esfuerzos de desarrollo.
En el paper se indica que LOFAR utiliza la arquitectura IBM Blue Gene/P en el correlador, pero también probaron NVIDIA Tesla C1060, ATI 4870 y Cell B.E.
Los resultados (*1) muestran que el poder de procesamiento y memoria de las actuales GPUs están desbalanceados para propósitos de correlación. Mientras el correlador en Blue Gene alcanza un increíble 96% del pico teórico de desempeño, en ATI sólo llega a 14%, en NVIDIA sólo trepa al 26% y en Cell/B.E. logra 92%.
El trabajo se presentó en la 23º Conferencia Internacional de Supercomputación (ICS), 8-12 junio 2009, Nueva York, USA. Se publicó en ACM.
Se puede obtener una copia en GPGPU.
Visualización interactiva de simulaciones cosmológicas
Tamas Szalay, Volker Springel y Gerard Lemson firman el paper:
GPU-Based Interactive Visualization of Billion Point Cosmological
Simulations
arXiv:0811.2055v2
Allí indican que, a pesar de los recientes avances en capacidades de gráficos de las computadoras, un enfoque de fuerza bruta es incapaz de mostrar interactivamente terabytes de datos. Indican haber implementado un sistema que usa un nivel jerárquico de detalle para los resultados de simulaciones cosmológicas, para poder mostrar visualmente resultados precisos sin cargar todos los datos (que contienen más de 10 mil millones de puntos). El principio guía del programa es que el usuario no debería ser capaz de distinguir lo que ve de todo el conjunto de datos original. Más aún, al usar un sistema de árbol para los niveles de detalle, el tamaño de los datos se limita sólo a la capacidad del sistema de entrada/salida que los contiene.
Springel parece ser un experto en la materia. Es quien desarrolló el código de GADGET para simulaciones cosmológicas.
El artículo indica que usaron los datos de la simulación Aquarius (una de las mayores que se hayan hecho) en la que hay 150 millones de partículas en cada paso de tiempo y 128 pasos en total, por lo que hay unas 20 mil millones de partículas. Toda la simulación requiere 1.4 terabytes de espacio en disco. La idea es no renderizar todos los datos, sino generar equivalentes en varias escalas. Esto se ha hecho en muchas ocasiones. Un ejemplo simple son las imágenes satelitales de Google Maps.
Para las simulaciones cosmológicas, el procedimiento generalmente consiste en tomar un gran número de puntos (actualmente hasta decenas de miles de millones) y renderizar cada uno como un pixel o un grupo, en la pantalla. La estructura de datos usada fueron octrees, que son árboles de ocho ramas, digamos. Así, los lugares cercanos al usuario espectador serán cargados con mucho detalle, mientras los más alejados mostrarán una versión simplificada.
El programa para la visualización utiliza la CPU sólo para decidir qué bloques cargar y renderizar. El resto del trabajo es realizado por la tarjeta gráfica.
El sistema implementado permite ver los datos a diferentes escalas y en distintas localizaciones, instantáneamente; examinar los datos en distintos momentos y seleccionar algunos puntos de interés y seguirlos desde el comienzo al final.
Y todo con una GeForce 8800 a 10 cuadros por segundo.
La punta del iceberg
Las mencionadas son sólo algunos de los varios usos que relacionan las GPU con la astronomía. Para citar algunos otros recursos y enlaces interesantes:
AstroGPU 2007 fue un taller sobre computación y unidades de procesamiento gráfico en astronomía y astrofísica. Se realizó en el Instituto de Estudios Avanzados de Princeton, 9-10 de noviembre de 2007. En la página de AstroGPU 2007 hay videos y presentaciones en pdf.
GAMER: a GPU-Accelerated Adaptive Mesh Refinement Code for Astrophysics
Hsi-Yu Schive, Yu-Chih Tsai, Tzihong Chiueh
arXiv:0907.3390v2
Graphic-Card Cluster for Astrophysics (GraCCA) -- Performance Tests
Hsi-Yu Schive, Chia-Hung Chien, Shing-Kwong Wong, Yu-Chih Tsai, Tzihong Chiueh
arXiv:0707.2991v2
En el artículo se describe la arquitectura del sistema GraCCA, un cluster de tarjetas gráficas para simulaciones astrofísicas. Consiste en 16 nodos, cada uno con 2 tarjetas NVIDIA GeForce 8800 GTX, con un rendimiento teórico de 16.2 TFLOPS.
Para el público general
Ciencia en casa
No sólo para la ciencia de alto rendimiento se pueden usar las actuales capacidades de las GPU. Aquí hemos comentado la posibilidad de hacer ciencia en una computadora personal, a través de proyectos como SETI@home. El proyecto posibilita usar CUDA para tener mucho mayor poder de procesamiento. Lo mismo ocurre con Einstein@Home y GPUGRID.
Brian Burke, de NVIDIA cuenta que "La tecnología CUDA de NVIDIA acelera drásticamente el ritmo de la investigación científica".
Y también para el recreo
Para finalizar, los juegos. No soy un ávido jugador (todavía estoy con Tomb Raider...), pero algunos parecen muy apetecibles:
Crazy Machines 2: Se trata de resolver problemas, usando PhysX. Este y otros juegos pueden verse en ejecución en videos de YouTube como el que sigue:
http://www.youtube.com/watch?v=Y-SCYg7pA-s
Warmonger
Si de tiros se trata, con Warmonger parece que podemos destruir todo a nuestro paso.
En YouTube:http://www.youtube.com/watch?v=rRMdv21q9Cw
Salvapantallas
NVIDIA posee un salvapantallas hipnotizante de una bola que va cayendo y rompiendo paños, con varias opciones de configuración, por ejemplo, es posible que el fondo del screensaver sea una imagen (o una serie) que tengamos en nuestra PC. Lo podemos previsualizar en YouTube.
Los dos juegos y el salvapantallas indicados pueden descargarse en forma gratuita de la página de Power Packs de NVIDIA.
Yapa
FastFractal256 es una aplicación para visualizar fractales de Mandelbrot. Utiliza CPU y GPU. Si no tenemos una tarjeta gráfica apropiada, usará sólo la unidad de procesamiento central. Puede descargarse una versión de prueba y ver videos e imágenes del programa en FastFractal.com
Para aprender
Las herramientas de desarrollo CUDA están formadas por tres componentes fundamentales para ayudar al programador a iniciarse en este lenguaje:
1. El último controlador CUDA
2. Un kit de herramientas completo
3. Ejemplos de código del SDK de CUDA
CUDA U contiene cursos online que ofrecen todo lo necesario para empezar a programar en CUDA o impartir conocimientos sobre este entorno de programación. También contiene enlaces con universidades que incluyen CUDA en sus planes de estudios.
Open CL
OpenCL (Open Computing Language) es un entorno de cálculo heterogéneo que se ejecuta sobre la arquitectura CUDA. Permite a los desarrolladores aprovechar la extraordinaria capacidad de procesamiento paralelo de las GPUs NVIDIA para crear aplicaciones de cálculo altamente eficientes.
Como parte de la presentación de OpenCL NVIDIA efectuó una demostración de la primera aplicación OpenCL para GPU del mundo ejecutada en una GPU NVIDIA para portátiles.
Las herramientas de desarrollo CUDA están formadas por tres componentes fundamentales para ayudar al programador a iniciarse en este lenguaje:
1. El último controlador CUDA
2. Un kit de herramientas completo
3. Ejemplos de código del SDK de CUDA
CUDA U contiene cursos online que ofrecen todo lo necesario para empezar a programar en CUDA o impartir conocimientos sobre este entorno de programación. También contiene enlaces con universidades que incluyen CUDA en sus planes de estudios.
Open CL
OpenCL (Open Computing Language) es un entorno de cálculo heterogéneo que se ejecuta sobre la arquitectura CUDA. Permite a los desarrolladores aprovechar la extraordinaria capacidad de procesamiento paralelo de las GPUs NVIDIA para crear aplicaciones de cálculo altamente eficientes.
Como parte de la presentación de OpenCL NVIDIA efectuó una demostración de la primera aplicación OpenCL para GPU del mundo ejecutada en una GPU NVIDIA para portátiles.
Fuentes y links relacionados
- (*1): Using Many-Core Hardware to Correlate Radio Astronomy Signals,
Rob V. van Nieuwpoor y John W. Romein - GPU Gems 3
Libro de Hubert Nguyen que ahora puede leerse online (en inglés), desde el enlace indicado. - Parallel Processing With CUDA, por Tom R. Halfhill, en Microprocessor Report, 28 enero 2008. Disponible en la página del autor.
Sobre las imágenes
- Simulación cosmológica (primera imagen) y octree. Crédito: Tamas Szalay, Volker Springel y Gerard Lemson
- Imágenes del sistema GraCCA. Crédito: Hsi-Yu Schive
- Imagen de Salvapantallas. Crédito: NVIDIA
Etiquetas:
Software en Blogalaxia-Ciencia en Bitácoras.com
No hay comentarios.:
Publicar un comentario