Se invita a la Comunidad de la FaI a presenciar la defensa de Tesis de Licenciatura titulada «Optimización e implementación de multiprocesamiento para una aplicación legacy de Dinámica de Fluídos«
Día y lugar: 21 de diciembre de 2017 a las 16:00 hs en el Salón Azul de la Biblioteca Central UNCO
Tesista: Andrés Huayquil
Director: Esp. Eduardo Grosclaude
Resumen
Llamamos Software Heredado (Legacy Software) a programas que permanecen en producción durante un largo período de tiempo, aun a pesar de los cambios tecnológicos que van ocurriendo a su alrededor, y que amenazan con dejarlos obsoletos. Las aplicaciones heredadas cumplen misiones críticas que hacen difícil reemplazarlas, por lo cual siguen vigentes en forma forzosa, a veces durante decenas de años. Particularmente en las áreas científicas, con problemas de cálculo intensivo, una vez que un programa arroja resultados correctos, no suelen existir modificaciones al código. El trabajo de modernizar un sistema legacy puede tener una envergadura variable, dependiendo de la complejidad del sistema y del nuevo ambiente donde vaya a funcionar. La modernización de una aplicación heredada puede verse como un proceso de optimización de la aplicación, sólo que para una plataforma diferente de aquella para la cual fue construida.
Este trabajo de tesis presenta la optimización de una aplicación científica del campo de la Dinámica de Fluidos, desarrollada en lenguaje Fortran como parte de un trabajo de doctorado. La aplicación analiza el comportamiento de una turbina eólica de eje horizontal y modela un flujo invíscido alrededor de la pala de la turbina a través del método de los paneles. Mediante la optimización se busca una mejora en el rendimiento de la aplicación, como también en la utilización de los recursos.
Se describe el proceso llevado a cabo, pasando en primer instancia por una optimización serial del código Fortran y luego por una optimización paralela para máquinas de memoria compartida, de manera que pueda aprovechar recursos que no estaban contemplados en su diseño original. La implementación de multiprocesamiento se realiza con la interfaz de programación paralela OpenMP, la cual provee un modelo portable y escalable para el desarrollo de aplicaciones paralelas de memoria compartida.
Al aplicar el proceso de optimización se producen distintas versiones de la aplicación: una versión serie optimizada y una versión con optimización paralela. La versión serie basa su optimización en aprovechar la mayor memoria RAM disponible en los sistemas de cómputo de memoria compartida actuales. El rendimiento aumenta al utilizar la memoria RAM, un medio de almacenamiento de datos de mayor velocidad de acceso que el disco, para el almacenamiento de datos intermedios (temporales) de la aplicación. La versión paralela aumenta el rendimiento mediante la ejecución simultánea de distintas iteraciones de bucles (sin dependencias de datos entre ellas) en diferentes cores. La evaluación de rendimiento de la versión paralela muestra un aumento significativo del rendimiento, respecto a la versión serie, para tamaños de problema reducidos. Sin embargo, el rendimiento decae para grandes tamaños de problema, determinando así nuevas optimizaciones a realizar.