Uso de Contadores Hardware para la mejora del rendimiento de la memoria: Códigos irregulares y migración de páginas

El objetivo de este proyecto es lograr un uso eficaz de los contadores hardware integrados en los procesadores, para mejorar el rendimiento de los accesos a memoria en tiempo de ejecución. Hemos seleccionado dos contextos en los que esta idea puede ser especialmente relevante: la ejecución eficiente de códigos irregulares, y el uso de migraciones de páginas para mejorar la ejecución de códigos paralelos. Aunque se trata de escenarios que en principio no están relacionados, nuestra propuesta plantea aplicar al problema de las migraciones de páginas las mismas técnicas utilizadas para incrementar la localidad de los accesos irregulares.

Objetivos

Los objetivos principales para alcanzar los beneficios mencionados previamente son los siguientes:

  1. Validar el uso de contadores hardware como una fuente de información para guiar la optimización de códigos irregulares secuenciales y paralelos. Esto implica el establecimiento de procedimientos para conseguir, almacenar y gestionar la información obtenida de los contadores hardware. Además, se necesita especificar los mecanismos para seleccionar arrays irregulares y punteros para los que se intentará optimizar el acceso. Por otra parte, debe considerarse la influencia de la naturaleza estadística del acceso a los contadores hardware para todas las fases del proyecto.
  2. Caracterizar la localidad (entre pares de referencias a memoria) y la afinidad (entre referencias a memoria y procesos) de los accesos irregulares a través de modelos obtenidos a partir de la información proporcionada por los contadores hardware. Esta información se obtendrá a nivel de las líneas cache. Los modelos para caracterizar la localidad y la afinidad se basarán en la localidad temporal, la localidad espacial y la latencia del acceso. A mayores, se considerará el desarrollo de modelos basados en páginas de memoria en vez de en líneas caché, con el objetivo de considerar el problema de la migración de páginas.
  3. Desarrollar estrategias para optimizar los diferentes problemas de rendimiento basados en técnicas pertenecientes a la teoría de grafos, la clusterización, las heurísticas genéticas, etc. De este modo, el problema de optimización puede reinterpretarse como un problema de maximización de la localidad y la afinidad. Para manejar este problema se utilizarán las técnicas mencionadas para la definición de modelos planteadas en el objetivo 2. Los problemas que se considerarán son:
    • Reordenar los accesos para optimizar la localidad (para un proceso) y/o la afinidad (para cierto número de procesos e hilos del código paralelo).
    • La migración de páginas en códigos paralelos.
  4. Adaptar el modelo al comportamiento de la jerarquía de memoria de la arquitectura del FinisTerrae en tiempo de compilación. En una primera fase proponemos la mejora de la integración del modelo en un compilador de la infraestructura, tal como gcc, para mejorar su usabilidad. Como un segundo paso, el modelo se adaptará a la arquitectura de los procesadores del supercomputador FinisTerrae. Esta tarea englobará el modelado de nuevas situaciones complejas no consideradas hasta ahora, tales como la interacción entre diferentes hilos de las cachés compartidas.