OPTIMIZA: Optimización de aplicaciones irregulares en arquitecturas emergentes de altas prestaciones CPU/GPU

La transición de la industria hacia los procesadores multinúcleo (multicore) está considerado como uno de los hitos más importantes de la historia de la computación. Sin embargo el hecho de disponer de procesadores más potentes no ha venido acompañado de un incremento importante en el rendimiento de las aplicaciones. Además, los sistemas multinúcleo actuales son tan diversos arquitectónicamente que las aplicaciones se deben especializar utilizando técnicas de optimización específicas para la arquitectura considerada.

Una de las principales razones para esta diversidad arquitectónica es la necesidad de buscar un equilibrio entre las capacidades de la memoria y el procesador. Cada año y medio el rendimiento de los procesadores se multiplica por dos, mientras que el de la memoria precisa de diez años para duplicar sus prestaciones. En el caso de las arquitecturas multinúcleo, por temas de coste y eficiencia, la tendencia de la industria del hardware es incrementar el número de núcleos (cores) frente al aumento del ancho de banda. Por tanto, la jerarquía de memoria se mantendrá como la llave fundamental para el rendimiento de las aplicaciones de las futuras arquitecturas multinúcleo.

Especialmente grave es el caso de las aplicaciones irregulares. En estas aplicaciones el principio de localidad, en el cual se basa el funcionamiento eficiente de la jerarquía de memoria, no se cumple. Por lo tanto, el rendimiento que se va a obtener cuando se ejecuten estas aplicaciones en arquitecturas multinúcleo será mucho más bajo que el de las aplicaciones estándar (típicamente, en torno a un 10% del rendimiento pico de la máquina). Las aplicaciones irregulares son de las más demandadas del ámbito científico, estando presentes, entre otros, en problemas de simulación de dispositivos electrónicos, mecánica de fluidos o problemas de n-cuerpos (astrofísica, dinámica molecular, etc.)

Objetivos

El objetivo general del proyecto es investigar en la paralelización y optimización de aplicaciones irregulares en el contexto de las nuevas arquitecturas que dominarán el mercado de la computación de altas prestaciones en los próximos años: los sistemas híbridos multinúcleo CPU/GPU. El proyecto tiene los siguientes subobjetivos:

  • Evaluar las GPUS y sus modelos de programación como plataforma adecuada para el desarrollo/optimización de aplicaciones irregulares en el ámbito de computación de altas prestaciones.
  • Extender los modelos de la jerarquía de memoria desarrollados previamente por los miembros del equipo investigador a las nuevas arquitecturas híbridas CPU multinúcleo con GPU.
  • Desarrollar herramientas software que permitan aprovechar la jerarquía de memoria por parte de las aplicaciones irregulares, y faciliten la programabilidad de este tipo de sistemas:
    • En el caso de las CPUs multinúcleo, investigando el desarrollo de técnicas automáticas de migración de páginas de memoria.
    • En el caso de las GPUs, desarrollando una librería matemática para códigos irregulares de álgebra matricial dispersa.