Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones

La tarea de desarrollar software paralelo que sea eficiente, lógicamente correcto y económico desde un punto de vista de costo-beneficio es compleja. Diversos problemas potenciales pueden causar comportamientos incorrectos y performance pobre. El diseño de software basado en patrones puede ayudar a...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Pérez, Gervasio Daniel
Formato: Tesis Doctoral
Lenguaje:Español
Publicado: 2018
Materias:
Acceso en línea:https://hdl.handle.net/20.500.12110/tesis_n6506_Perez
Aporte de:
id todo:tesis_n6506_Perez
record_format dspace
institution Universidad de Buenos Aires
institution_str I-28
repository_str R-134
collection Biblioteca Digital - Facultad de Ciencias Exactas y Naturales (UBA)
language Español
orig_language_str_mv Español
topic MODELOS FORMALES DE CONCURRENCIA
PARALELISMO ESTRUCTURADO
GENERACION DE CODIGO BASADA EN TRANSFORMACIONES
FORMAL CONCURRENCY MODELS
STRUCTURED PARALLELISM
TRANSFORMATION BASED CODE GENERATION
spellingShingle MODELOS FORMALES DE CONCURRENCIA
PARALELISMO ESTRUCTURADO
GENERACION DE CODIGO BASADA EN TRANSFORMACIONES
FORMAL CONCURRENCY MODELS
STRUCTURED PARALLELISM
TRANSFORMATION BASED CODE GENERATION
Pérez, Gervasio Daniel
Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
topic_facet MODELOS FORMALES DE CONCURRENCIA
PARALELISMO ESTRUCTURADO
GENERACION DE CODIGO BASADA EN TRANSFORMACIONES
FORMAL CONCURRENCY MODELS
STRUCTURED PARALLELISM
TRANSFORMATION BASED CODE GENERATION
description La tarea de desarrollar software paralelo que sea eficiente, lógicamente correcto y económico desde un punto de vista de costo-beneficio es compleja. Diversos problemas potenciales pueden causar comportamientos incorrectos y performance pobre. El diseño de software basado en patrones puede ayudar a cubrir los requisitos de correctitud y de escalabilidad. Sin embargo, éste tiene diversos problemas: (a) muchos de los patrones no están disponibles en los modelos y lenguajes actuales de programación paralela; (b) frecuentemente es difícil implementar y utilizar el patrón más apropiado para el problema a resolver; y (c) muchos patrones no proveen fácilmente la capacidad de componerse entre sí, dificultando el soporte para procesamiento paralelo sobre arquitecturas heterogéneas. Con el objetivo de ayudar a solventar estas deficiencias, las contribuciones de esta tesis son tres. Primero, se presenta un nuevo patrón genérico de procesamiento paralelo llamado PCR [43], que consiste en una combinación de elementos productores, consumidores y reductores que operan de manera concurrente sobre un conjunto de datos de entrada. Se provee una definición matemática de la semántica de dicho patrón en términos del formalismo FXML. Se muestra además que los PCRs pueden componerse y comprenden otros patrones de programación paralela conocidos, proveyendo así un entorno compatible con diseños heterogéneos. Segundo, se muestra formalmente que el patrón PCR puede ser implementado de manera correcta en términos de un modelo de concurrencia más concreto a modo de implementación. Tercero, se provee una librería multiplataforma de plantillas C++ que permite expresar instancias concretas del patrón PCR. Se presenta un prototipo de compilador basado en reescritura de plantillas que genera de manera automática implementaciones paralelas y distribuídas de PCRs basándose en la librería de concurrencia Intel Concurrent Collections. El entorno de programación y generación de código se ilustra con diversos casos de estudio. En resumen, el entorno propuesto provee medios para mejorar la calidad y productividad del desarrollo de software paralelo mediante una metodología basada en construcciones de programación de alto nivel e independientes de la plataforma y una infraestructura de compilación para generar código ejecutable portable.
format Tesis Doctoral
author Pérez, Gervasio Daniel
author_facet Pérez, Gervasio Daniel
author_sort Pérez, Gervasio Daniel
title Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
title_short Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
title_full Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
title_fullStr Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
title_full_unstemmed Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
title_sort especificación, diseño e implementación de un entorno de programación concurrente basado en patrones
publishDate 2018
url https://hdl.handle.net/20.500.12110/tesis_n6506_Perez
work_keys_str_mv AT perezgervasiodaniel especificaciondisenoeimplementaciondeunentornodeprogramacionconcurrentebasadoenpatrones
AT perezgervasiodaniel specificationdesignandimplementationofapatternbasedconcurrentprogrammingenvironment
_version_ 1782029048143151104
spelling todo:tesis_n6506_Perez2023-10-03T13:09:35Z Especificación, diseño e implementación de un entorno de programación concurrente basado en patrones Specification, design and implementation of a pattern-based concurrent programming environment Pérez, Gervasio Daniel MODELOS FORMALES DE CONCURRENCIA PARALELISMO ESTRUCTURADO GENERACION DE CODIGO BASADA EN TRANSFORMACIONES FORMAL CONCURRENCY MODELS STRUCTURED PARALLELISM TRANSFORMATION BASED CODE GENERATION La tarea de desarrollar software paralelo que sea eficiente, lógicamente correcto y económico desde un punto de vista de costo-beneficio es compleja. Diversos problemas potenciales pueden causar comportamientos incorrectos y performance pobre. El diseño de software basado en patrones puede ayudar a cubrir los requisitos de correctitud y de escalabilidad. Sin embargo, éste tiene diversos problemas: (a) muchos de los patrones no están disponibles en los modelos y lenguajes actuales de programación paralela; (b) frecuentemente es difícil implementar y utilizar el patrón más apropiado para el problema a resolver; y (c) muchos patrones no proveen fácilmente la capacidad de componerse entre sí, dificultando el soporte para procesamiento paralelo sobre arquitecturas heterogéneas. Con el objetivo de ayudar a solventar estas deficiencias, las contribuciones de esta tesis son tres. Primero, se presenta un nuevo patrón genérico de procesamiento paralelo llamado PCR [43], que consiste en una combinación de elementos productores, consumidores y reductores que operan de manera concurrente sobre un conjunto de datos de entrada. Se provee una definición matemática de la semántica de dicho patrón en términos del formalismo FXML. Se muestra además que los PCRs pueden componerse y comprenden otros patrones de programación paralela conocidos, proveyendo así un entorno compatible con diseños heterogéneos. Segundo, se muestra formalmente que el patrón PCR puede ser implementado de manera correcta en términos de un modelo de concurrencia más concreto a modo de implementación. Tercero, se provee una librería multiplataforma de plantillas C++ que permite expresar instancias concretas del patrón PCR. Se presenta un prototipo de compilador basado en reescritura de plantillas que genera de manera automática implementaciones paralelas y distribuídas de PCRs basándose en la librería de concurrencia Intel Concurrent Collections. El entorno de programación y generación de código se ilustra con diversos casos de estudio. En resumen, el entorno propuesto provee medios para mejorar la calidad y productividad del desarrollo de software paralelo mediante una metodología basada en construcciones de programación de alto nivel e independientes de la plataforma y una infraestructura de compilación para generar código ejecutable portable. Developing correct and efficient parallel software in a cost-effective way is challenging. There are a number of pitfalls that lead to incorrect behaviors and poor performance. Pattern-based software design could help achieving correctness and scalability. However, it has several drawbacks: (a) most patterns are not broadly supported by current parallel-programming models and languages; (b) most often than not getting the appropriate pattern right is difficult; and (c) most patterns do not compose easily, thus making it hard to deal with heterogeneous parallelism. As an attempt to overcoming these issues, the contribution of this thesis is threefold. First, it proposes a parallel-programming pattern, called PCR [43], consisting of producers, consumers, and reducers which operate concurrently on data sets. To favor correctness, the semantics of PCRs is mathematically defined in terms of the formalism FXML. PCRs are shown to be composable and to seamlessly subsume other well-known parallel-programming patterns, thus providing a framework for heterogeneous designs. Second, it formally shows how the PCR pattern can be correctly implemented in terms of a more concrete parallel execution model. Third, it proposes a platform-agnostic C++ template library to express PCRs. It briefly presents a prototype compiler based on C++ template re-writing which automatically generates distributed implementations relying on the Intel Concurrent Collections C++ library. The programming and code-generation suite is illustrated through several case studies. Overall, the proposed framework provides means to enhance parallel software quality and productivity through an automated methodology based on high-level, platform-independent programming constructs, and a compiling infrastructure to generate portable, executable code. Fil: Pérez, Gervasio Daniel. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina. 2018 Tesis Doctoral PDF Español info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by-nc-sa/2.5/ar https://hdl.handle.net/20.500.12110/tesis_n6506_Perez