Archive

Archive for June, 2011

Computación científica en GPUs con CUDA

June 23rd, 2011

Por Eneko Mateo[1,2], Alexander Mendiburu[2], José Miguel-Alonso[2]

Hasta hace poco lo habitual para la computación en paralelo era unir varios procesadores o montar clústeres (grupos de ordenadores comunicados entre sí), pero ¿es el procesador el único elemento del ordenador que realiza cálculos?

Obviamente no. Las tarjetas gráficas realizan gran cantidad de cálculos al tratar las imágenes. A la utilización de estos dispositivos para realizar computación de propósito general se la denomina GPGPU (general-purpose computing on graphics procesing units).

Para entender un poco mejor por qué se pueden realizar estos cálculos, veamos a grandes rasgos la evolución tanto de las tarjetas gráficas  como de los microprocesadores. Las tarjetas gráficas (GPGPUs) tomaron una dirección muy diferente a la de los procesadores (CPUs). Mientras que los procesadores tomaron el camino de ser elementos de computación general, las tarjetas gráficas se especializaron en el tratamiento de imágenes digitales. Esto provocó que ambas arquitecturas se fueran distanciando y, mientras las CPUs se hacían con más memoria cache para almacenar y manejar diferentes datos con mayor facilidad, las GPUs se hacían con más unidades de cálculo (más sencillas que las integradas en las CPUs), puesto que su principal trabajo era realizar las mismas tareas múltiples veces sobre diferentes datos.

Por las cualidades que ofrecen las GPGPUs, ya sea su gran nivel de paralelismo o su reducido coste en comparación con un superordenador, nos ha parecido interesante realizar un acercamiento a esta nueva tecnología para averiguar cuál es su rendimiento, así como hacia dónde podría evolucionar.

 

CUDA

CUDA son las siglas de Compute Unified Device Architecture, que hace referencia tanto a la arquitectura utilizada en tarjetas gráficas NVIDIA como a un conjunto de herramientas de desarrollo creadas por esta compañía. CUDA pone al alcance de los programadores la posibilidad de desarrollar, en un lenguaje de programación común en contextos científico-técnicos (C, Fortran), aplicaciones que exploten el paralelismo masivo ofrecido por las GPUs.

CUDA no es el único modo de crear aplicaciones de propósito general sobre GPUs, pero sí es uno de los primeros; debido a eso hay disponibles múltiples recursos (libros, artículos, páginas web y foros) que ofrecen abundante información [3][4]. La competencia más directa en estos momentos es OpenCL (Open Computing Lenguage o Lenguaje de Computación Abierto) [5], que es un estándar abierto y puede ejecutarse tanto en GPUs como CPUs. Otra ventaja de este estándar emergente es que puede funcionar tanto en tarjetas NVIDIA como AMD/ATI.

CUDA processing flow

Figura. Flujo de Ejecución de CUDA (6)

Como se puede apreciar en la figura, el flujo de ejecución de CUDA es bastante sencillo. En primer lugar se copian los datos desde la memoria principal a la memoria de la GPU (1). Luego el procesador dispara la puesta en marcha de la ejecución en paralelo (2). La tarjeta gráfica se encarga de la ejecución en paralelo (3). Y para terminar se copian los resultados de la memoria de la GPU a la memoria principal (4).

 

El presente e inmediato futuro de la supercomputación está en la hibridación entre miles CPUs y de GPGPUs trabajando de forma cooperativa, las primeras llevando a cabo la lógica principal de la aplicación y las segundas realizando tareas de aceleración de las partes más costosas del código. Las GPUs no son la única alternativa a la computación híbrida: se ha trabajado con procesadores Cell y con FPGAs. Pero, por el momento, es la de más éxito, y la más accesible. Es de gran importancia, por tanto, conocer cómo explotar de forma eficiente estos potentes dispositivos.

 

GPUs en la UPV/EHU

El IZO-SGI dispone de nodos con estás caráterísticas.

 

[1] IZO-SGI.
[2] Intelligent Systems Group.
[3] Nvidia CUDA zone.
[4] Nvidia forum.
[5] Khronos Group. OpenCL.
[6] Wikimedia Commons.

 

General

Curso I-MATH de software libre orientado a ciencias e ingeniería

June 9th, 2011

El curso, orientado a investigadores, técnicos de empresas y alumnos de grado y Máster, pretende mostrar la gran capacidad actual del software libre para resolver problemas estándar en Ciencias e Ingeniería. En particular, para el curso se han elegido paquetes de software muy testeados y de gran difusión en el contexto académico y que recorren desde software matemático básico hasta software más avanzado con orientación hacia la Matemática Discreta, la Estadística, el Diseño Asistido por Ordenador o la Simulación Numérica de diversos procesos físicos que puedan llegar a acoplarse entre ellos.

 

IV Curso intensivo I-MATH de software libre orientado a ciencias e ingeniería

Del 27 de junio al 16 de septiembre de 2011

Materias

El curso se compone de las seis materias siguientes:
1. Simulación Termomecánica de Procesos: Salome y Code-Aster (STM): Del 4 al 8 de julio de 2011 en Santiago de Compostela.
2. Simulación en Multifísica: ELMER (SMF): Del 27 de junio al 1 de julio de 2011 en A Coruña.
3. Entorno Estadístico R (EER): Del 12 al 16 de septiembre de 2011 en Santiago de Compostela.
4. Programación en Python orientado a la Ingeniería (LP): Del 5 al 9 de septiembre de 2011 en Santiago de Compostela.
5. Simulación en dinámica de fluidos con OpenFOAM (CFD): Del 18 al 22 de julio de 2011 en Vigo.
6. Simulación numérica con FreeFEM (FEM): Del 4 al 8 de julio de 2011 en Cádiz.

Más información

Se puede consultar toda la información relativa a esta cuarta edición y realizar la inscripción en la página web:
http://mathematica.nodo.cesga.es/SoftwareLibre

 

 

 

Anuncios