COMPUTACIÓN PARALELA Y DISTRIBUÍDA

Compiladores para arquitecturas paralelas:

Generación automática de código paralelo: Esta línea de investigación direcciona la paralelización automática de programas secuenciales. Se aborda el desarrollo de técnicas de compilación para convertir un programa secuencial en un programa concurrente ejecutable en arquitecturas multi-core y many-core. En concreto, estamos trabajando en el desarrollo de técnicas de análisis avanzado de programas para descubrir el paralelismo implícito en los programas secuenciales y el desarrollo de técnicas de transformación de código orientadas a la construcción de la versión paralela más eficiente de un programa secuencial.

Optimización iterativa: Nuestro grupo está trabajando en la optimización iterativa de códigos sobre arquitecturas heterogéneas que incluyen GPUs y/o CPUs. La optimización iterativa permite generar un enorme número de versiones optimizadas de la misma aplicación y selecciona la versión más rápida para una arquitectura dada por medio de modelos analíticos, heurísticas o la ejecución del código real.

Lenguajes y librerías para computación paralela:

Nuestro grupo diseña y elabora herramientas (Servet) y librerías (HTA, UPCBLAS) para mejorar la productividad de los programadores, en especial en el desarrollo de aplicaciones paralelas. Servet es un conjunto de benchmarks portables utilizados para medir los parámetros hardware más representativos que permitan la optimización automática de aplicaciones en clusters de multicores. Hierarchically Tiled Array o HTA es una librería diseñada para facilitar la escritura de programas basados en bloques en lenguajes orientados a objetos. Su objetivo es mejorar la localidad de los accesos a memoria y facilitar al programador la explotación del paralelismo de datos. UPCBLAS es una librería numérica paralela para computaciones con matrices densas utilizando el lenguaje de programación PGAS (Partitioned Global Address Space) UPC (Unified Parallel C). La popularidad de los lenguajes PGAS ha incrementado en los últimos años gracias a su alta programabilidad y rendimiento, especialmente en arquitecturas jerárquicas como los clusters de multicores.

Nuestras propuestas, que cubren sistemas de memoria distribuida, compartida e híbrida, dan lugar a códigos mejor estructurados, más legibles y fáciles de mantener que aquellos construidos con las herramientas estándar, mientras que el rendimiento es muy similar. Gran parte de esta investigación se ha desarrollado en colaboración con universidades líderes como la University of Illinois at Urbana-Champaign o empresas de primer nivel como HP ó IBM.

Tolerancia a fallos y maleabilidad de aplicaciones paralelas:

Los sistemas utilizados para le ejecución de aplicaciones paralelas de larga duración deberían proporcionar algún mecanismo de tolerancia a fallos ya que la probabilidad de fallo aumenta con el tiempo de ejecución y el número de nodos. El checkpointing y la posterior recuperación es una de las técnicas más populares para proporcionar soporte de tolerancia a fallos. Nosotros hemos desarrollado CPPC (ComPiler for Portable Checkpointing), una herramienta de tolerancia a fallos a nivel de aplicación para aplicaciones paralelas de paso de mensajes diseñada con especial énfasis en la portabilidad.

Actualmente estamos explorando la posibilidad de implementar maleabilidad en las aplicaciones MPI como una extensión de la herramienta CPPC, de forma que la aproximación final permita la reconfiguración transparente durante la ejecución de la aplicación.

Computación de propósito general sobre GPUs:

En este campo se está trabajando en el desarrollo de una herramienta que permita la implementación automática o semiautomática de un algoritmo sobre una GPU. Otra meta de esta línea de investigación es la implementación de bibliotecas de funciones para sistemas multi-GPU que faciliten el desarrollo de aplicaciones que necesiten una comunicación eficiente entre las diferentes GPUS. En ambos casos se plantea que el trabajo desarrollado sea útil para los principales lenguajes de programación usados en este tipo de sistemas, como OpenCl y Cuda.

CLUSTER PLUTÓN

COMUNICACIONES JAVA

Comunicaciones Java de alta velocidad:

Estamos trabajando en middleware de comunicaciones de baja latencia en Java para redes de altas prestaciones tales como 10/40 Gigabit Ethernet e InfiniBand. El middleware desarrollado soporta comunicaciones mediante paso de mensajes (Fast MPJ), además de permitir la aceleración de las comunicaciones de forma transparente para el usuario (Java Fast Sockets). Su principal objetivo es la reducción del tiempo de respuesta de aplicaciones paralelas y distribuidas en Java, algo estratégico en numerosos ámbitos como el trading financiero.

GRÁFICOS POR COMPUTADOR

Gráficos por computador y visualización científica:

El principal objetivo de esta línea de investigación es el procesamiento eficiente de diversas formas de representación de modelos gráficos complejos, como subdivisión de superficies, superficies paramétricas o representación híbrida de terrenos. Hacemos especial hincapié en la búsqueda de un procesamiento interactivo en tiempo real, para lo que se plantea la explotación eficiente del hardware presente en los sistemas actuales: CPUs multinúcleo y GPUs (Graphics Processing Unit).

Otro aspecto que se plantea dentro de esta línea de investigación es el de la representación de imágenes sintéticas con un alto grado de realismo, tanto a través de métodos de iluminación realistas como del procesamiento correcto de transparencias y texturas.

MICROPROCESADORES DE ALTAS PRESTACIONES

Diseño de microarquitecturas de computadores:

El GAC ha participado en el desarrollo de SESC, un simulador microarquitectural de investigación usado en todo el mundo. El grupo también innova en este campo proponiendo nuevas arquitecturas y políticas de gestión de la jerarquía de memoria con el objetivo de reducir tanto los tiempos de ejecución como la energía consumida por la ejecución de aplicaciones en sistemas de un solo procesador y multicores.

Diseño de aceleradores hardware para multimedia y computación eficiente:

En términos de eficiencia energética, la diferencia entre microprocesadores y circuitos de aplicación específica crece de forma sostenida. La aceleración hardware es, por tanto, una herramienta poderosa para reducir costes y mejorar en el respeto al medio ambiente.

Mientras que los costes de diseñar y manufacturar circuitos de aplicación específica es muy elevado, existen varias alternativas disponibles, tales como FPGAs, ASICs estructurados o ASIPs. En su mayor parte, las nuevas plataformas provienen del mundo de los sistemas empotrados, donde ya han aportado velocidad y bajo consumo.

Esta línea de investigación explora el potencial de mapear las tareas más comunes sobre aceleradores hardware con el propósito de mejorar la eficiencia energética, aumentar la velocidad y reducir la cantidad de hardware necesario. Los principales escenarios que se contemplan son la computación de altas prestaciones, Software-as-a-Service y Web 2.0, donde un gran número de servidores pueden compartir un número reducido de aceleradores que se hacen cargo de las tareas de más peso.

Modelado y predicción del rendimiento de la jerarquía de memoria:

Nuestro grupo ha desarrollado una herramienta analítica que permite predecir de forma precisa el comportamiento caché. Nuestra plataforma, que permite obtener predicciones en menos de un segundo, solo requiere como entrada el código fuente y la configuración de la jerarquía de memoria. Nuestra aproximación es totalmente automatizable y puede ser usada en un compilador. Nuestra herramienta ha sido usada de forma exitosa para guiar optimizaciones de compilación complejas tales como la selección del tamaño de bloque óptimo así como para predecir el peor tiempo de ejecución en sistemas en tiempo real.

ROBÓTICA MÓVIL

Uno de los actuales desafíos en robótica es la integración de robots en los ambientes cotidianos. Para ello es necesario desarrollar un sistema de despliegue rápido y sencillo que permita a los robots salir de los centros de investigación y estar fuera de la continua supervisión de expertos en robótica. Los robots deberían poder ser instalados y puestos en operación en cortos periodos de tiempo.

En esta línea, nuestros principales objetivos son: evitar completamente predefinir el control de los robots y aprender este control a partir de la interacción con el entorno y de la observación de los seres humanos; identificar y localizar personas y robots en interiores; e interactuar con la gente de modo amigable y natural.

Otra importante cuestión abierta es permitir que los robots se muevan autónomamente en entornos no estructurados, complejos y dinámicos. Para ello es necesario desarrollar eficientes sistemas de percepción 3D, métodos de representación del entorno y fusión de datos sensoriales. Finalmente, los robots tienen que mapear y localizarse a si mismos en su entorno. Estamos desarrollando algoritmos para localizar el robot a partir de mapas conocidos y para simultáneamente mapear y localizar el robot en el entorno. Como sensores principales estamos usando cámaras de omnivisión, cámaras estéreo, sensores Kinect y láseres 3D.

SISTEMAS DE INFORMACIÓN GEOGRÁFICA

El Grupo de Arquitectura de Computadores tiene 15 años de experiencia en el campo de los Sistemas de Información Geográfica (SIG). Ha desarrollado diversos proyectos en ámbitos como las infraestructuras, la ordenación del suelo, la concentración parcelaria, la información meteorológica, el aprovechamiento de tierras y la gestión forestal. Los tipos de desarrollo que se realizan incluyen sistemas de información SIG-web, algoritmos de optimización de altas prestaciones para la resolución de problemas con componentes espaciales, aplicaciones para dispositivos móviles, servicios web, módulos para aplicaciones de escritorio, y visualización de conjuntos masivos de datos georreferenciados. En la mayor parte de los proyectos que se llevan a cabo se prima el empleo de software libre y de estándares SIG, contribuyendo al desarrollo de las llamadas Infraestructuras de Datos Espaciales.

Los principales campos de aplicación de las investigaciones y trabajos que se realizan son la ordenación territorial y el desarrollo rural. Cabe destacar la contribución realizada en estos campos a la innovación dentro de la administración pública. Mediante diversos contratos con distintas administraciones se han desarrollado sistemas que, además de mejorar la gestión, fomentan y facilitan la participación pública, la transparencia y el gobierno electrónico.

Otra línea de trabajo dentro de este campo es la aplicación de técnicas de computación de altas prestaciones a los SIG, como por ejemplo la paralelización de algoritmos para la elaboración de planes urbanísticos sobre sistemas multinúcleo y clústers. Esta es una línea en la que se pretende ahondar. Entre los planes de trabajo futuro se encuentra la aplicación de este tipo de técnicas a algoritmos de teledetección, los cuales también presentan importantes costes computacionales.

Entre las herramientas desarrolladas o en las que colabora se pueden citar SITEGAL, Sistema de Información de Tierras de Galicia, para la gestión del Banco de Terras de Galicia, MeteoSIX mobile, aplicación móvil para Android e iPhone que ofrece la información de predicción numérica de Meteogalicia, MeteoRoute, aplicación para Android e iOS que ofrece predicción meteorológica sobre rutas, la API de MeteoSIX, el visor geográfico del Observatorio Raia y SIUXFor, sistema para la creación de las antiguas Unidades de Xestión Forestal. El GAC también ha desarrollado herramientas experimentales para concentración parcelaria, permuta de parcelas entre particulares, apoyo en la elaboración de planes de ordenación municipal y visualización de datos tridimensionales, por ejemplo datos de vuelos LiDAR.