High-level programming abstractions for distributed stream processing

Detalhes bibliográficos
Autor(a) principal: Pieper, Ricardo Luis
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Biblioteca Digital de Teses e Dissertações da PUC_RS
Texto Completo: http://tede2.pucrs.br/tede2/handle/tede/9916
Resumo: 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.
id P_RS_c965071e7f57b4123007f6044cdc3869
oai_identifier_str oai:tede2.pucrs.br:tede/9916
network_acronym_str P_RS
network_name_str Biblioteca Digital de Teses e Dissertações da PUC_RS
repository_id_str
spelling Fernandes, Luiz Gustavo Leãohttp://lattes.cnpq.br/5979862734558983Griebler, Dalvan Jairhttp://lattes.cnpq.br/1989039890812573http://lattes.cnpq.br/8575401766242973Pieper, Ricardo Luis2021-10-19T17:43:14Z2020-09-25http://tede2.pucrs.br/tede2/handle/tede/9916Aplicaçõ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.Submitted by PPG Ciência da Computação (ppgcc@pucrs.br) on 2021-10-19T13:22:11Z No. of bitstreams: 1 RICARDO LUIS PIEPER_DIS.pdf: 2487704 bytes, checksum: 6b989dcec44ae88774abc70595d8f2d8 (MD5)Approved for entry into archive by Sarajane Pan (sarajane.pan@pucrs.br) on 2021-10-19T17:33:00Z (GMT) No. of bitstreams: 1 RICARDO LUIS PIEPER_DIS.pdf: 2487704 bytes, checksum: 6b989dcec44ae88774abc70595d8f2d8 (MD5)Made available in DSpace on 2021-10-19T17:43:14Z (GMT). No. of bitstreams: 1 RICARDO LUIS PIEPER_DIS.pdf: 2487704 bytes, checksum: 6b989dcec44ae88774abc70595d8f2d8 (MD5) Previous issue date: 2020-09-25application/pdfhttp://tede2.pucrs.br:80/tede2/retrieve/182313/RICARDO%20LUIS%20PIEPER_DIS.pdf.jpgengPontifícia Universidade Católica do Rio Grande do SulPrograma de Pós-Graduação em Ciência da ComputaçãoPUCRSBrasilEscola PolitécnicaParallel ProgrammingStream ParallelismParallel Code GenerationDomain- Specific LanguageSkeleton LibraryAlgorithmic SkeletonsParallel PatternsParallel ProcessingDistributed Memory ArchitecturesDistributed ProgrammingC++PipelineFarmProgramação ParalelaParalelismo de FluxoGeração de Código ParaleloLinguagem de Domínio EspecíficoBibliotecas de EsqueletoEsqueletos AlgorítmicosPadrões ParalelosProcessamento ParaleloArquiteturas de Memória DistribuídaProgramação DistribuídaCIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAOHigh-level programming abstractions for distributed stream processingAbstrações de programação de alto nível para processamento de fluxo contínuo de dados distribuídosinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisTrabalho não apresenta restrição para publicação-4570527706994352458500500-862078257083325301info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da PUC_RSinstname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)instacron:PUC_RSTHUMBNAILRICARDO LUIS PIEPER_DIS.pdf.jpgRICARDO LUIS PIEPER_DIS.pdf.jpgimage/jpeg5370http://tede2.pucrs.br/tede2/bitstream/tede/9916/4/RICARDO+LUIS+PIEPER_DIS.pdf.jpg8685f785f6bd308850b414b9b04e8c79MD54TEXTRICARDO LUIS PIEPER_DIS.pdf.txtRICARDO LUIS PIEPER_DIS.pdf.txttext/plain365845http://tede2.pucrs.br/tede2/bitstream/tede/9916/3/RICARDO+LUIS+PIEPER_DIS.pdf.txt4119da0992e89423a315c4b5e7916b2dMD53ORIGINALRICARDO LUIS PIEPER_DIS.pdfRICARDO LUIS PIEPER_DIS.pdfapplication/pdf2487704http://tede2.pucrs.br/tede2/bitstream/tede/9916/2/RICARDO+LUIS+PIEPER_DIS.pdf6b989dcec44ae88774abc70595d8f2d8MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-8590http://tede2.pucrs.br/tede2/bitstream/tede/9916/1/license.txt220e11f2d3ba5354f917c7035aadef24MD51tede/99162021-10-19 21:00:20.846oai:tede2.pucrs.br:tede/9916QXV0b3JpemE/P28gcGFyYSBQdWJsaWNhPz9vIEVsZXRyP25pY2E6IENvbSBiYXNlIG5vIGRpc3Bvc3RvIG5hIExlaSBGZWRlcmFsIG4/OS42MTAsIGRlIDE5IGRlIGZldmVyZWlybyBkZSAxOTk4LCBvIGF1dG9yIEFVVE9SSVpBIGEgcHVibGljYT8/byBlbGV0cj9uaWNhIGRhIHByZXNlbnRlIG9icmEgbm8gYWNlcnZvIGRhIEJpYmxpb3RlY2EgRGlnaXRhbCBkYSBQb250aWY/Y2lhIFVuaXZlcnNpZGFkZSBDYXQ/bGljYSBkbyBSaW8gR3JhbmRlIGRvIFN1bCwgc2VkaWFkYSBhIEF2LiBJcGlyYW5nYSA2NjgxLCBQb3J0byBBbGVncmUsIFJpbyBHcmFuZGUgZG8gU3VsLCBjb20gcmVnaXN0cm8gZGUgQ05QSiA4ODYzMDQxMzAwMDItODEgYmVtIGNvbW8gZW0gb3V0cmFzIGJpYmxpb3RlY2FzIGRpZ2l0YWlzLCBuYWNpb25haXMgZSBpbnRlcm5hY2lvbmFpcywgY29ucz9yY2lvcyBlIHJlZGVzID9zIHF1YWlzIGEgYmlibGlvdGVjYSBkYSBQVUNSUyBwb3NzYSBhIHZpciBwYXJ0aWNpcGFyLCBzZW0gP251cyBhbHVzaXZvIGFvcyBkaXJlaXRvcyBhdXRvcmFpcywgYSB0P3R1bG8gZGUgZGl2dWxnYT8/byBkYSBwcm9kdT8/byBjaWVudD9maWNhLgo=Biblioteca Digital de Teses e Dissertaçõeshttp://tede2.pucrs.br/tede2/PRIhttps://tede2.pucrs.br/oai/requestbiblioteca.central@pucrs.br||opendoar:2021-10-19T23:00:20Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)false
dc.title.por.fl_str_mv High-level programming abstractions for distributed stream processing
dc.title.alternative.por.fl_str_mv Abstrações de programação de alto nível para processamento de fluxo contínuo de dados distribuídos
title High-level programming abstractions for distributed stream processing
spellingShingle High-level programming abstractions for distributed stream processing
Pieper, Ricardo Luis
Parallel Programming
Stream Parallelism
Parallel Code Generation
Domain- Specific Language
Skeleton Library
Algorithmic Skeletons
Parallel Patterns
Parallel Processing
Distributed Memory Architectures
Distributed Programming
C++
Pipeline
Farm
Programação Paralela
Paralelismo de Fluxo
Geração de Código Paralelo
Linguagem de Domínio Específico
Bibliotecas de Esqueleto
Esqueletos Algorítmicos
Padrões Paralelos
Processamento Paralelo
Arquiteturas de Memória Distribuída
Programação Distribuída
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
title_short High-level programming abstractions for distributed stream processing
title_full High-level programming abstractions for distributed stream processing
title_fullStr High-level programming abstractions for distributed stream processing
title_full_unstemmed High-level programming abstractions for distributed stream processing
title_sort High-level programming abstractions for distributed stream processing
author Pieper, Ricardo Luis
author_facet Pieper, Ricardo Luis
author_role author
dc.contributor.advisor1.fl_str_mv Fernandes, Luiz Gustavo Leão
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/5979862734558983
dc.contributor.advisor-co1.fl_str_mv Griebler, Dalvan Jair
dc.contributor.advisor-co1Lattes.fl_str_mv http://lattes.cnpq.br/1989039890812573
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/8575401766242973
dc.contributor.author.fl_str_mv Pieper, Ricardo Luis
contributor_str_mv Fernandes, Luiz Gustavo Leão
Griebler, Dalvan Jair
dc.subject.eng.fl_str_mv Parallel Programming
Stream Parallelism
Parallel Code Generation
Domain- Specific Language
Skeleton Library
Algorithmic Skeletons
Parallel Patterns
Parallel Processing
Distributed Memory Architectures
Distributed Programming
C++
Pipeline
Farm
topic Parallel Programming
Stream Parallelism
Parallel Code Generation
Domain- Specific Language
Skeleton Library
Algorithmic Skeletons
Parallel Patterns
Parallel Processing
Distributed Memory Architectures
Distributed Programming
C++
Pipeline
Farm
Programação Paralela
Paralelismo de Fluxo
Geração de Código Paralelo
Linguagem de Domínio Específico
Bibliotecas de Esqueleto
Esqueletos Algorítmicos
Padrões Paralelos
Processamento Paralelo
Arquiteturas de Memória Distribuída
Programação Distribuída
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
dc.subject.por.fl_str_mv Programação Paralela
Paralelismo de Fluxo
Geração de Código Paralelo
Linguagem de Domínio Específico
Bibliotecas de Esqueleto
Esqueletos Algorítmicos
Padrões Paralelos
Processamento Paralelo
Arquiteturas de Memória Distribuída
Programação Distribuída
dc.subject.cnpq.fl_str_mv CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
description 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.
publishDate 2020
dc.date.issued.fl_str_mv 2020-09-25
dc.date.accessioned.fl_str_mv 2021-10-19T17:43:14Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://tede2.pucrs.br/tede2/handle/tede/9916
url http://tede2.pucrs.br/tede2/handle/tede/9916
dc.language.iso.fl_str_mv eng
language eng
dc.relation.program.fl_str_mv -4570527706994352458
dc.relation.confidence.fl_str_mv 500
500
dc.relation.cnpq.fl_str_mv -862078257083325301
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Ciência da Computação
dc.publisher.initials.fl_str_mv PUCRS
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Escola Politécnica
publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da PUC_RS
instname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron:PUC_RS
instname_str Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron_str PUC_RS
institution PUC_RS
reponame_str Biblioteca Digital de Teses e Dissertações da PUC_RS
collection Biblioteca Digital de Teses e Dissertações da PUC_RS
bitstream.url.fl_str_mv http://tede2.pucrs.br/tede2/bitstream/tede/9916/4/RICARDO+LUIS+PIEPER_DIS.pdf.jpg
http://tede2.pucrs.br/tede2/bitstream/tede/9916/3/RICARDO+LUIS+PIEPER_DIS.pdf.txt
http://tede2.pucrs.br/tede2/bitstream/tede/9916/2/RICARDO+LUIS+PIEPER_DIS.pdf
http://tede2.pucrs.br/tede2/bitstream/tede/9916/1/license.txt
bitstream.checksum.fl_str_mv 8685f785f6bd308850b414b9b04e8c79
4119da0992e89423a315c4b5e7916b2d
6b989dcec44ae88774abc70595d8f2d8
220e11f2d3ba5354f917c7035aadef24
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
repository.mail.fl_str_mv biblioteca.central@pucrs.br||
_version_ 1799765352505147392