Alumno investigador: Juan González Caminero
Estudios: Ingeniería informática. Escuela de Ingeniería Informática. Departamento de Informática
Profesor/tutor: Arturo Gonzalez Escribano
Resumen del proyecto:
En la actualidad es frecuente el uso de coprocesadores de alto rendimiento en sistemas de cómputo de propósito general, tal y como refleja la lista TOP500 de los mayores supercomputadores del mundo. Estos sistemas presentan una serie de desafíos a la hora de de desarrollar aplicaciones haciendo uso de estos dispositivos de forma eficiente, uno de ellos es la gestión de memoria. Los coprocesadores tienen su propio espacio de memoria, separado de la memoria de la máquina donde están instalados, y las transferencias de datos entre ambos son costosas.
En este contexto surgen varias propuestas para aliviar este problema, alguna de ellas nativas, como las transferencias de memoria asíncronas o la memoria unificada de CUDA, y otras de terceros que en muchos casos pretenden facilitar al programador el uso de estos recursos nativos del modelo de programación.
En este trabajo se realiza una comparativa entre dos de estas soluciones: el modelo Controllers del grupo de investigación Trasgo, y el modelo OmpSs del Centro de Supercomputación de Barcelona. Aunque no es su única función, ambos ofrecen al desarrollador un sistema automático para introducir transferencias de memoria eficientes.
Para realizar esta comparativa se ha realizado la implementación en OmpSs de las aplicaciones de prueba usadas por el grupo Trasgo en la librería Controllers, y se ha hecho un estudio experimental de su eficiencia. También se ha implementado en CUDA la factorización de Cholesky utilizada por el BSC en demostraciones de OmpSs, en vistas a un futura implementación y comparativa con Controllers.
Objetivos alcanzados:
Se ha estudiado el modelo OmpSs lo suficiente para realizar las implementaciones de los benchmarks y proponer posibles causas para los resultados obtenidos.
Se han desarrollado versiones de los benchmarks del grupo de investigación Trasgo correctamente paralelizadas con OmpSs.
Se ha implementado la aplicación Factorización de Cholesky en el modelo de programación CUDA para ser ejecutada en GPUs de Nvidia.
Se ha experimentado con los benchmarks mencionados en ambos entornos, OmpSs y Controllers, se han analizado los resultados y extraído conclusiones.
Sectores de aplicación:
Este tipo de modelos, que facilitan la programación con aceleradores, y mejoran la eficiencia de las aplicaciones solapando de forma automática transferencia de datos y cómputo, tienen aplicación en cualquier área que requiera tareas que impliquen cómputo intensivo, como por ejemplo simulaciones de fenómenos físicos.
El trabajo realizado durante este proyecto permitirá tomar decisiones a la hora de elegir el modelo a utilizar para esas aplicaciones, en vista de la eficiencia obtenida con cada uno de los modelos y la complejidad de desarrollo de los mismos.
Metodología empleada:
Se han implementado las versiones paralelizadas de las cuatro aplicaciones de forma iterativa. Con dada versión obtenida se buscaba una paralelización más eficiente y se comprobaban tanto la corrección de los resultados como la eficiencia de la nueva aplicación. También se determinaba que el comportamiento fuera el esperado a través de los profilers Nvprof, de Nvidia, y Extrae, del BSC.