Resumen:
|
La tesis se sitúa en el área de los lenguajes funcionales paralelos y muestra la utilidad de uno de ellos en el desarrollo de aplicaciones paralelas eficientes, entendiendo el concepto de eficiencia tanto en el aspecto de aprovechamiento de las máquinas paralelas, como en el aspecto de minimización de los tiempos de desarrollo de los programas. El lenguaje Eden,una extensión paralela de Haskell, es novedoso y el doctorando ha participado tanto en su diseño como en su implementación, parte de la cual se refleja en la tesis. Las principales aportaciones de la tesis pueden agruparse en cuatro apartados: 1,- Diseño y desarrollo de un simulador de arquitecturas paralelas que permiten predecir el comportamiento que tendrían los programas Eden sobre distintas arquitecturas. Esta herramienta facilita las labores de desarrollo de programas, pues permite detectar ineficiencias en el código fuente, y corregirlas fácilmente antes de disponer de una arquitectura paralela concreta. 2,- Diseño y desarrollo de una estrategia de compilación que permita reutilizar la mejor tecnología de compilación de programas Haskell disponible en el mercado,y que a la vez permita realizar optimizaciones sobre las partes paralelas del código fuente. Dicha estrategia ha permitido que la implementación del lenguaje Eden genere código eficiente. 3,- Diseño y desarrollo de una amplia librería de esqueletos (esquemas genéricos de algoritmo paralelos) en Eden. Dado que los esqueletos resuelven esquemas genéricos, se facilitan notablemente las tareas del programación paralela, que se reducirán a decidir qué esquema aplicar en cada caso. Es la primera vez que un lenguaje funcional perezoso se utiliza como lenguaje de implementación de esqueletos, siendo la principal ventaja el hecho de que se obtiene la facilidad de desarrollo de los lenguajes basados en esqueletos, pero sin heredar sus restricciones a la hora de describir nuevos esquemas paralelos. 4,- Experimentación de los esqueletos en numerosos casos de estudio, demostrando la utilidad de los tres puntos anteriores para obtener un lenguaje de programación funcional paralela eficiente tanto en tiempo de ejecución de los programas como en tiempo de desarrollo de los mismos
|