Diseño y desarrollo de una plataforma de paralelización y distribución automática para supercomputación no coordinada

En esta memoria se presenta el diseño y desarrollo de una plataforma de paralelización y distribución de código automática destinada a la supercomputación de manera no coordinada. El desarrollo de esta aplicación se enmarca en el proyecto de I+D+i, CLOUDBOOK: A Cloudaware distributed parallel compil...

Descripción completa

Detalles Bibliográficos
Autor: Ramos Díaz, Juan
Tipo de recurso: tesis de maestría
Fecha de publicación:2019
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:español
OAI Identifier:oai:docta.ucm.es:20.500.14352/14317
Acceso en línea:https://hdl.handle.net/20.500.14352/14317
Access Level:acceso abierto
Palabra clave:004(043.3)
Supercomputación
Computación paralela
Computación distribuida
Compilación
Python
Flask
NFS
JSON
PLY
Supercomputing
Parallel computing
Distributed computing
Compilation
Informática (Informática)
1203.17 Informática
Descripción
Sumario:En esta memoria se presenta el diseño y desarrollo de una plataforma de paralelización y distribución de código automática destinada a la supercomputación de manera no coordinada. El desarrollo de esta aplicación se enmarca en el proyecto de I+D+i, CLOUDBOOK: A Cloudaware distributed parallel compiler (Celtic plus C2016/2-4), cuyo objetivo es la creación de una plataforma que integre la distribución a través de la nube y la compilación y ejecución de un programa en una única plataforma, e integrar distintas tecnologías de supercomputación en esta plataforma. Dentro de este proyecto surge la necesidad de desarrollar la plataforma encargada de realizar el troceado y distribución automática de código de forma transparente al programador. De estos dos problemas, el de mayor contribución al estado del arte es el del troceado automático del código para su ejecución de forma distribuida y paralela. Esta será la plataforma desarrollada en este trabajo, cuyo objetivo es la automatización de la generación de piezas de código distribuible a partir del programa fuente original, así como la distribución de dichas piezas en una red de máquinas. Esto permite liberar al programador de realizar un diseño distribuido, sin renunciar a las ventajas de la computación distribuida con un coste de aprendizaje de uso muy bajo. Con este objetivo se ha desarrollado la plataforma en el lenguaje de programación Python, usando librerías para analizar el lenguaje y su estructura sintáctica, como PLY. Para la comunicación a través de la red se ha usado el framework Flask de Python. Se ha usado también NFS como sistema de ficheros distribuido sobre el que están los ficheros del programa. Por último, la información de configuración se realiza mediante ficheros en formato JSON