Evolución del diseño de soluciones paralelas sobre clústers de multicore a fin de maximizar la performance : Aprovechamiento de la jerarquía de memoria

En este trabajo se realiza un análisis comparativo de las técnicas de programación paralela, en el que puede observarse cómo la evolución en el diseño de la solución a un mismo problema permite maximizar la performance de algoritmos paralelos en arquitecturas clúster de multicore. Este análisis s...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Leibovich, Fabiana Yael
Otros Autores: Naiouf, Marcelo
Formato: Tesis Trabajo de especializacion
Lenguaje:Español
Publicado: 2013
Materias:
Acceso en línea:http://sedici.unlp.edu.ar/handle/10915/31210
Aporte de:
Descripción
Sumario:En este trabajo se realiza un análisis comparativo de las técnicas de programación paralela, en el que puede observarse cómo la evolución en el diseño de la solución a un mismo problema permite maximizar la performance de algoritmos paralelos en arquitecturas clúster de multicore. Este análisis se realiza utilizando un caso de estudio ampliamente estudiado en el área como lo es la multiplicación de matrices. Para ello, se implementaron diferentes soluciones para resolver el problema, partiendo de soluciones de alto nivel y bajo acoplamiento con la arquitectura, hasta llegar a soluciones de bajo nivel, dependientes de la arquitectura de prueba subyacente y que aprovechan las características de la misma, como por ejemplo la jerarquía de memoria. Las soluciones implementadas son una solución utilizando pasaje de mensajes, y tres soluciones híbridas teniendo en cuenta diferentes librerías de programación paralela (OpenMPI, Pthreads y OpenMP), y diferentes esquemas de descomposición de los datos. Asimismo, las pruebas de los algoritmos implementados se analizan desde distintos puntos de vista. Por un lado, escalando el tamaño del problema a resolver y por otro, escalando la cantidad de núcleos de procesamiento utilizados.