P11-TIC-08144

Consejería de Innovación, Ciencia y Empresa

Junta de Andalucía

Técnicas de aceleración en librerías y lenguajes paralelos para arquitecturas many-core y heterogéneas

Indice de memorias:

Datos del Proyecto

Investigadores

IP: Mª Angeles González Navarro

Rafael Asenjo Plaza

Francisco Corbera Peña

Juan López Gómez

Pablo Guerrero García

Rafael Larrosa Jiménez

Antonio Vilches Reina


Incentivo Concedido: 90.252€

Periodo: 27/3/2013 al 26/3/2017

Contactar con:

Mª Ángeles González Navarro

Complejo Tecnológico

Campus de Teatinos

29071 Málaga, España

Desp. 2.2.31


Telf: +34 952 132791

Fax: +34 952 132790


web: www.ac.uma.es/~angeles

La industria ha apostado por las arquitecturas multicore como nuevo paradigma para asegurar que se siguen aumentando las prestaciones con cada nueva generación tecnológica. Ahora, no es el aumento de frecuencia el factor tecnológico que asegura el incremento de rendimiento, sino el hecho de que se aumentan el número de cores por chip.

Ya se habla no sólo de la implantación de las arquitecturas multicore, sino de una evolución hacia las llamadas arquitecturas many-core con cientos de cores por chip. Se ha comprobado que puede ser barato y eficiente construir y mantener sistemas many-core altamente paralelos. Es más, las llamadas arquitecturas heterogéneas están emergiendo como una alternativa que ofrecen ya alto rendimiento, con un bajo consumo de potencia y un bajo coste de fabricación. Sin embargo, la explotación de este tipo de arquitecturas presenta un importante desafío a los diseñadores de herramientas software y aplicaciones: para acelerar la ejecución de las aplicaciones, el programador se enfrenta a una tarea compleja y tediosa en la que se ve forzado a extraer y expresar el paralelismo de la aplicación, lidiando con detalles de bajo nivel de la arquitectura, lo que limita la portabilidad. De hecho, se ha llegado a comparar la paralelización con una actividad de artesanía, cuando debiera ser un proceso de ingeniería software.

Creemos que la clave final para el éxito de estos sistemas paralelos está en desarrollar modelos de programación y el correspondiente software del sistema que los soporten y simplifiquen el esfuerzo del programador a la hora de generar aplicaciones escalables para las nuevas arquitecturas.  En esta línea, se habla de desarrollar un entorno de programación que permita mejorar la productividad del programador. Con este término se quiere caracterizar la facilidad de portar los algoritmos y mantener aplicaciones que escalen en las arquitecturas de nueva generación altamente paralelas, con el mínimo esfuerzo por parte del programador.

En este proyecto nos unimos al esfuerzo de mejorar la productividad del programador.  La novedad de nuestra investigación estriba en que nos centraremos en el análisis de un conjunto específico de aplicaciones poco estudiadas: las aplicaciones irregulares emergentes, denominadas también RMS (Recognition, Mining, Synthesis). Se trata de aplicaciones utilizadas en dominios tales como medicina, biología, economía, ingeniería, entornos multimedia e incluso en el ámbito doméstico, y que representan la nueva frontera en computación.  La dificultad de este tipo de aplicaciones se debe a que muchas de ellas son de tipo irregular lo que significa que la mayoría de la computación suele estar organizada en torno a estructuras de datos basadas en punteros, tales como árboles, listas, estructuras de datos dispersas (sparse), grafos u objetos. Se sabe relativamente poco sobre cómo explotar paralelismo para estos casos. Nuestro objetivo a medio plazo está en identificar los paradigmas básicos de paralelismo para este tipo de aplicaciones y en incorporarlos a lenguajes y librerías de paralelización orientadas a la productividad.

En particular, este proyecto está vertebrado por uno de los problemas aún no resueltos en las aplicaciones irregulares, problema que limita la escalabilidad de los códigos paralelos en arquitecturas many-core y sobre todo en heterogéneas: el problema del desbalanceo (o balanceo) de la computación entre los distintos cores o elementos de procesamiento. Un desbalanceo en arquitecturas paralelas implica un bajo aprovechamiento de los recursos y una deficiente amortización del hardware y de su consumo energético.  Este es un problema complejo que aparece en las alicaciones irregulares en tiempo de ejecución, por lo que se han de diseñar mecanismos específicos de soporte en runtime para abordarlo. En el presente proyecto exploramos cómo resolverlo desde distintas perspectivas del software del sistema, abordando para ello dos ámbitos de trabajo orientados a mejorar la productividad del programador, a saber, los lenguajes paralelos y las librerías de paralelización. En cada ámbito, partiendo de herramientas que representan el estado del arte actual, propondremos el desarrollo de nueva tecnología que permita resolver, de manera transparente al programador, el problema del desbalanceo dinámico de la carga en el contexto de aplicaciones irregulares emergentes, tanto para arquitecturas many-core como heterogéneas.

Resumen del Proyecto