Por favor, use este identificador para citar o enlazar este ítem: https://hdl.handle.net/10923/19591
Tipo: masterThesis
Título: High-level programming abstractions for distributed stream processing
$$Babstrações De Programação De Alto Nível Para Processamento De Fluxo Contínuo De Dados Distribuídos
Autor(es): Pieper, Ricardo Luis
Orientador: Fernandes, Luiz Gustavo Leão
Griebler, Dalvan Jair
Editor: Pontifícia Universidade Católica do Rio Grande do Sul
Programa: Programa de Pós-Graduação em Ciência da Computação
Fecha de Publicación: 2021
Palabras clave: PROGRAMAÇÃO PARALELA
PROCESSAMENTO PARALELO
LINGUAGEM DE PROGRAMAÇÃO DE DOMÍNIO ESPECÍFICO (COMPUTADORES)
ARQUITETURA DE COMPUTADOR
INFORMÁTICA
Resumen: Aplicações de processamento de fluxo contínuo de dados (stream processing) representam uma parte significativa dos softwares atuais. Uma quantidade maior de dados é gerada todos os dias e de fontes variadas (através de dispositivos computacionais e aplicações), que requerem processamento em tempo hábil. Arquiteturas de memória compartilhada não conseguem atender demandas de processamento em larga escala. No contexto de computação de alta performance, a interface de programação MPI (Message Passing Interface) é considerada o estado da arte para implementar programas paralelos em C/C++. No entanto, a exploração de paralelismo de fluxo contínuo de dados usando MPI é difícil e sujeita a erros aos desenvolvedores de aplicação, pois ele expõe os detalhes de baixo nível das arquiteturas de computadores e sistemas operacionais. Os programadores precisam lidar com mecanismos de serialização de dados, comunicação entre processos, sincronização, tolerância a falhas, balanceamento de carga, escalonamento de trabalhos e estratégias de paralelismo. Este trabalho aborda um subconjunto desses problemas e desafios, oferecendo duas abstrações de alto-nível para processamento de fluxo contínuo de dados em arquiteturas de memória distribuída. Primeiramente, foi criada uma biblioteca de paralelismo de fluxo contínuo de dados nomeada de DSPARLIB. A biblioteca foi construída como uma biblioteca de esqueletos equipada com os padrões paralelos Farm e Pipeline, provendo abstrações acima do MPI. Depois, a linguagem SPAR foi estendida para suportar arquiteturas de memória distribuída, uma vez que ela é uma linguagem de domínio específico para expressar paralelismo de fluxo contínuo de dados usando anotações do C++11, que se mostram produtivas em arquiteturas de memória compartilhada.Este trabalho conseguiu estender o compilador e a linguagem SPAR sem alterar significativamente a sintaxe e a semântica, gerando código que usa DSPARLIB como ambiente de execução paralelo. Os experimentos foram conduzidos usando aplicações reais de processamento de fluxo contínuo de dados em diferentes configurações de cluster. Este trabalho demonstra que a DSPARLIB provê uma interface mais simples que o MPI e apresenta um desempenho competitivo. O compilador da linguagem SPAR foi capaz de gerar código paralelo automaticamente, sem perdas de desempenho em comparação com código escrito à mão com a DSPARLIB. Por último, com todas essas abstrações de alto nível, a SPAR se torna a primeira linguagem baseada em anotações para expressar paralelismo de fluxo contínuo de dados em C++ a suportar arquiteturas de memória distribuída, evitando refatorações de código significativas para permitir a execução paralela em clusters.
Stream processing applications represent a significant part of today’s software. An increased amount of streaming data is generated every day from various sources (computing devices and applications), which requires to be processed on time. Shared-memory architectures cannot cope with these large-scale processing demands. In High-Performance Computing (HPC), Message Passing Interface (MPI) is the state-of-the-art parallel API (Application Programming Interface) for implementing parallel C/C++ programs. However, the stream parallelism exploitation using MPI is difficult and error-prone to application developers because it exposes low-level details to them, regarding computer architectures and operating systems. Programmers have to deal with implementation mechanisms for data serizalization, process communication and synchronization, fault tolerance, work scheduling, load balancing, and parallelism strategies. Our research work addresses a subset of these challenges and problems providing two high-level programming abstractions for distributed stream processing. First, we created a distributed stream parallelism library called DSPARLIB. It was built as a skeleton library equipped with Farm and Pipeline parallel patterns to provide programming abstractions on top of MPI. Second, we extend the SPAR language and compiler roles to support distributed memory architectures since it is a Domain-Specific Language (DSL) for expressing stream parallelism using C++11 annotation that has been proved to be productive on shared-memory architectures. We managed to make it work without significantly changing the easy of use language syntax and semantics, generating automatic parallel code with SPAR’s compiler using DSPARLIB as the parallel runtime. The experiments were conducted using real-world stream processing applications and testing different cluster configurations.We demonstrated that DSPARLIB provides a simpler API than MPI and a competitive performance. Also, the SPAR’s compiler was able to generate parallel code automatically without performance penalties compared to handwritten codes in DSPARLIB. Finally, with all these high-level programming abstractions implemented, SPAR becomes the first annotation-based language for expressing stream parallelism in C++ programs to support distributed-memory architectures, avoiding significant sequential code refactoring to enable parallel execution on clusters.
URI: https://hdl.handle.net/10923/19591
Aparece en las colecciones:Dissertação e Tese

Ficheros en este ítem:
Fichero Descripción TamañoFormato 
000501174-Texto+completo-0.pdfTexto completo2,43 MBAdobe PDFAbrir
Ver


Todos los ítems en el Repositorio de la PUCRS están protegidos por derechos de autor, con todos los derechos reservados, y están bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional. Sepa más.