Easing the benchmarking of parallel stream processing on multi-cores
Autor(a) principal: | |
---|---|
Data de Publicação: | 2023 |
Tipo de documento: | Tese |
Idioma: | eng |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da PUC_RS |
Texto Completo: | https://tede2.pucrs.br/tede2/handle/tede/10884 |
Resumo: | No mundo de hoje impulsionado por dados e crescente expectativa por resultados imediatos, há uma demanda crescente por processamento de dados em tempo real/baixa latência. O processamento de stream é uma técnica que processa os dados à medida que eles se tornam disponíveis, permitindo o processamento de dados quase em tempo real. Para lidar com o processamento de grandes volumes de dados, aplicações de processamento de stream devem recorrer a técnicas de paralelismo para acelerar o processamento. Embora existam interfaces de programação paralela (IPPs) capazes de adicionar várias camadas de abstração, o paralelismo no processamento de stream ainda é uma tarefa difícil e que normalmente exige conhecimento especializado para atingir os níveis de desempenho desejados. Isso gera um grande esforço de pesquisa em direção à aumentar o desempenho do processamento paralelo de stream e tornar a programação paralela mais acessível. Tipicamente, benchmarks são usados para avaliar as IPPs e novas soluções nesse contexto. No entanto, existem várias limitações nos benchmarks existentes, incluindo a falta de benchmarks para algumas categorias de aplicações de processamento de stream, poucas ou nenhuma opção de parametrização, dificuldade em estender os benchmarks para outras IPPs, falta de métricas de desempenho adequadas, falta de preocupação com usabilidade, suporte apenas para linguagens baseadas na Java Virtual Machine (JVM), etc. Este trabalho propõe um framework chamado SPBench para criar benchmarks personalizados e avaliar o processamento paralelo de stream. Nosso principal objetivo é facilitar o processo de benchmarking no processamento de stream, incluindo a criação, compilação, execução, ajuste-fino e avaliação dos benchmarks. Portanto, esta tese de doutorado fornece as seguintes principais contribuições científicas: (I) Um framework que simplifica o benchmarking de aplicações de processamento de stream, fornecendo uma Application Programming Interface (API) e uma interface de linha de comando para simplificar, reutilizar código, personalizar, estender e avaliar diferentes aspectos ou propriedades em relação ao processamento paralelo de stream. (II) Um conjunto de benchmarks paralelos em C++ para processamento de stream que inclui aplicações do mundo real e as IPPs mais utilizadas neste contexto. (III) Um estudo comparativo abrangente das IPPs mais populares que usam o paralelismo de stream em C++. (IV) Mecanismos para simulação dinâmica de frequência de stream de dados em aplicações de processamento de stream, com um conjunto de algoritmos para gerar os padrões de frequência de stream de dados mais comumente usados na literatura e uma análise do impacto da frequência de dados no desempenho dessas aplicações. (V) Uma análise do impacto do tamanho de micro-batches no desempenho de aplicações de processamento de stream, incluindo mecanismos para controle dinâmico de batch baseado em tamanho específico ou intervalos de tempo. Testamos o framework SPBench com cinco aplicações do mundo real de processamento de vídeo/imagem, compressão de dados e detecção de fraudes. Neste trabalho nós tentamos mostrar os benefícios do SPBench usando-o em combinação com IPPs para gerar benchmarks de processamento paralelo de stream e realizar diversas análises. No geral, os resultados mostraram que as abstrações de alto nível das IPPs podem causar um grande impacto no desempenho quando abstraem mecanismos de ajuste fino. Nos experimentos de frequência de dados, a IPP FastFlow obteve mais benefícios de cenários de frequência variável do que o TBB em nossos casos de teste. Por fim, os resultados experimentais mostraram que a potencial vantagem de desempenho do uso de microbatches em ambientes multi-núcleo tende a aparecer apenas em cenários muito específicos |
id |
P_RS_c0d37fc6ba1cf5303e593b3a44d0d1be |
---|---|
oai_identifier_str |
oai:tede2.pucrs.br:tede/10884 |
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 Leaohttp://lattes.cnpq.br/5979862734558983Griebler, Dalvanhttp://lattes.cnpq.br/1989039890812573Schepke, Claudiohttp://lattes.cnpq.br/6412713158883137http://lattes.cnpq.br/8808580706231354Garcia, Adriano Marques2023-07-04T18:42:01Z2023-03-31https://tede2.pucrs.br/tede2/handle/tede/10884No mundo de hoje impulsionado por dados e crescente expectativa por resultados imediatos, há uma demanda crescente por processamento de dados em tempo real/baixa latência. O processamento de stream é uma técnica que processa os dados à medida que eles se tornam disponíveis, permitindo o processamento de dados quase em tempo real. Para lidar com o processamento de grandes volumes de dados, aplicações de processamento de stream devem recorrer a técnicas de paralelismo para acelerar o processamento. Embora existam interfaces de programação paralela (IPPs) capazes de adicionar várias camadas de abstração, o paralelismo no processamento de stream ainda é uma tarefa difícil e que normalmente exige conhecimento especializado para atingir os níveis de desempenho desejados. Isso gera um grande esforço de pesquisa em direção à aumentar o desempenho do processamento paralelo de stream e tornar a programação paralela mais acessível. Tipicamente, benchmarks são usados para avaliar as IPPs e novas soluções nesse contexto. No entanto, existem várias limitações nos benchmarks existentes, incluindo a falta de benchmarks para algumas categorias de aplicações de processamento de stream, poucas ou nenhuma opção de parametrização, dificuldade em estender os benchmarks para outras IPPs, falta de métricas de desempenho adequadas, falta de preocupação com usabilidade, suporte apenas para linguagens baseadas na Java Virtual Machine (JVM), etc. Este trabalho propõe um framework chamado SPBench para criar benchmarks personalizados e avaliar o processamento paralelo de stream. Nosso principal objetivo é facilitar o processo de benchmarking no processamento de stream, incluindo a criação, compilação, execução, ajuste-fino e avaliação dos benchmarks. Portanto, esta tese de doutorado fornece as seguintes principais contribuições científicas: (I) Um framework que simplifica o benchmarking de aplicações de processamento de stream, fornecendo uma Application Programming Interface (API) e uma interface de linha de comando para simplificar, reutilizar código, personalizar, estender e avaliar diferentes aspectos ou propriedades em relação ao processamento paralelo de stream. (II) Um conjunto de benchmarks paralelos em C++ para processamento de stream que inclui aplicações do mundo real e as IPPs mais utilizadas neste contexto. (III) Um estudo comparativo abrangente das IPPs mais populares que usam o paralelismo de stream em C++. (IV) Mecanismos para simulação dinâmica de frequência de stream de dados em aplicações de processamento de stream, com um conjunto de algoritmos para gerar os padrões de frequência de stream de dados mais comumente usados na literatura e uma análise do impacto da frequência de dados no desempenho dessas aplicações. (V) Uma análise do impacto do tamanho de micro-batches no desempenho de aplicações de processamento de stream, incluindo mecanismos para controle dinâmico de batch baseado em tamanho específico ou intervalos de tempo. Testamos o framework SPBench com cinco aplicações do mundo real de processamento de vídeo/imagem, compressão de dados e detecção de fraudes. Neste trabalho nós tentamos mostrar os benefícios do SPBench usando-o em combinação com IPPs para gerar benchmarks de processamento paralelo de stream e realizar diversas análises. No geral, os resultados mostraram que as abstrações de alto nível das IPPs podem causar um grande impacto no desempenho quando abstraem mecanismos de ajuste fino. Nos experimentos de frequência de dados, a IPP FastFlow obteve mais benefícios de cenários de frequência variável do que o TBB em nossos casos de teste. Por fim, os resultados experimentais mostraram que a potencial vantagem de desempenho do uso de microbatches em ambientes multi-núcleo tende a aparecer apenas em cenários muito específicosIn today’s fast-changing data-driven world, there is increasing demand for realtime/low-latency data processing. Stream processing is a technique that envisages processing data as it becomes available, enabling near real-time data processing. Stream processing applications must resort to parallelism techniques to speed up processing and to cope with processing large volumes of data. Although there are parallel programming interfaces (PPIs) that add several abstraction layers, parallelism in stream processing is still a difficult task, usually demanding expert knowledge to achieve desired performance levels. This generates a lot of research effort toward boosting parallel stream processing performance and making parallel programming more accessible. Typically, benchmarks are used to evaluate the PPIs and new solutions in this context. However, there are a number of limitations in existing benchmarks, including not addressing some categories of stream processing applications, few or no parameterization options, difficulty extending the benchmarks to other PPIs, lack of appropriate performance metrics, poor usability, only targeting JVM-based languages, and others. This work proposes a framework called SPBench for creating custom benchmarks and evaluating parallel stream processing. Our main goal is to ease the benchmarking process in parallel stream processing, including the creation, building, execution, tuning, and evaluating of the benchmarks. Therefore, this doctoral dissertation provides the following main scientific contributions: (I) A framework that simplifies the benchmarking of stream processing applications, providing an API and a command-line interface to simplify, reuse code, customize, extend, and evaluate diferente aspects or properties regarding parallel stream processing. (II) A parallel C++ benchmark suite for stream processing that includes real-world applications and the most state-of-theart Parallel Programming Interfaces (PPIs) in this context. (III) A comprehensive comparative study of the most popular PPIs leveraging C++ stream parallelism. (IV) Mechanisms for dynamic data stream frequency simulation in stream processing applications with a set of algorithms for generating the literature’s most commonly used data stream frequency patterns and an analysis of the data frequency impact on the performance of stream processing applications. (V) An analysis of the performance impact of micro-batch sizing on stream processing applications, including mechanisms for real-time and dynamic batching management, allowing users to adjust batch sizes on the fly either based on specific size targets or time intervals. We test the SPBench framework with five real-world applications of video/image processing, data compression, and fraud detection. We show the benefits of SPBench by using it in combination with PPIs to generate parallel stream processing benchmarks and conduct various analyses. Overall, the results showed that the high-level abstractions of PPIs can cause significant performance penalties when they hide fine-tuning mechanisms. In the data frequency experiments, the FastFlow PPI benefited more from varying frequency scenarios than the TBB in our test cases. Finally, the experimental results showed that the potential performance advantage of using micro-batches on multi-cores tends to show up only in specific scenarios.Submitted by PPG Ciência da Computação (ppgcc@pucrs.br) on 2023-06-30T12:33:24Z No. of bitstreams: 1 ADRIANO MARQUES GARCIA_TES.pdf: 4977720 bytes, checksum: 3592ef3268f8a911e418ca47190005ba (MD5)Approved for entry into archive by Sarajane Pan (sarajane.pan@pucrs.br) on 2023-07-04T18:22:25Z (GMT) No. of bitstreams: 1 ADRIANO MARQUES GARCIA_TES.pdf: 4977720 bytes, checksum: 3592ef3268f8a911e418ca47190005ba (MD5)Made available in DSpace on 2023-07-04T18:42:01Z (GMT). No. of bitstreams: 1 ADRIANO MARQUES GARCIA_TES.pdf: 4977720 bytes, checksum: 3592ef3268f8a911e418ca47190005ba (MD5) Previous issue date: 2023-03-31Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPESapplication/pdfhttps://tede2.pucrs.br/tede2/retrieve/188301/ADRIANO%20MARQUES%20GARCIA_TES.pdf.jpgengPontifícia Universidade Católica do Rio Grande do SulPrograma de Pós-Graduação em Ciência da ComputaçãoPUCRSBrasilEscola PolitécnicaStream ProcessingFrameworkBenchmarkMulti-correProcessamento de FluxoFrameworkBenchmarkMulti-núcleoCIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAOEasing the benchmarking of parallel stream processing on multi-coresFacilitando a avaliacao do processamento paralelo de stream em arquiteturas multi-nucleoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisTrabalho não apresenta restrição para publicação-4570527706994352458500500600-8620782570833253013590462550136975366info: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_RSTHUMBNAILADRIANO MARQUES GARCIA_TES.pdf.jpgADRIANO MARQUES GARCIA_TES.pdf.jpgimage/jpeg5349https://tede2.pucrs.br/tede2/bitstream/tede/10884/3/ADRIANO+MARQUES+GARCIA_TES.pdf.jpg04ac53ccf33b64cce6278ac60672ce38MD53TEXTADRIANO MARQUES GARCIA_TES.pdf.txtADRIANO MARQUES GARCIA_TES.pdf.txttext/plain484288https://tede2.pucrs.br/tede2/bitstream/tede/10884/4/ADRIANO+MARQUES+GARCIA_TES.pdf.txtc5505da575fdb4e320cc3144a335ddb5MD54ORIGINALADRIANO MARQUES GARCIA_TES.pdfADRIANO MARQUES GARCIA_TES.pdfapplication/pdf4977720https://tede2.pucrs.br/tede2/bitstream/tede/10884/2/ADRIANO+MARQUES+GARCIA_TES.pdf3592ef3268f8a911e418ca47190005baMD52LICENSElicense.txtlicense.txttext/plain; charset=utf-8590https://tede2.pucrs.br/tede2/bitstream/tede/10884/1/license.txt220e11f2d3ba5354f917c7035aadef24MD51tede/108842023-07-05 12:00:20.979oai:tede2.pucrs.br:tede/10884QXV0b3JpemE/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:2023-07-05T15: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 |
Easing the benchmarking of parallel stream processing on multi-cores |
dc.title.alternative.por.fl_str_mv |
Facilitando a avaliacao do processamento paralelo de stream em arquiteturas multi-nucleo |
title |
Easing the benchmarking of parallel stream processing on multi-cores |
spellingShingle |
Easing the benchmarking of parallel stream processing on multi-cores Garcia, Adriano Marques Stream Processing Framework Benchmark Multi-corre Processamento de Fluxo Framework Benchmark Multi-núcleo CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO |
title_short |
Easing the benchmarking of parallel stream processing on multi-cores |
title_full |
Easing the benchmarking of parallel stream processing on multi-cores |
title_fullStr |
Easing the benchmarking of parallel stream processing on multi-cores |
title_full_unstemmed |
Easing the benchmarking of parallel stream processing on multi-cores |
title_sort |
Easing the benchmarking of parallel stream processing on multi-cores |
author |
Garcia, Adriano Marques |
author_facet |
Garcia, Adriano Marques |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Fernandes, Luiz Gustavo Leao |
dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/5979862734558983 |
dc.contributor.advisor-co1.fl_str_mv |
Griebler, Dalvan |
dc.contributor.advisor-co1Lattes.fl_str_mv |
http://lattes.cnpq.br/1989039890812573 |
dc.contributor.advisor-co2.fl_str_mv |
Schepke, Claudio |
dc.contributor.advisor-co2Lattes.fl_str_mv |
http://lattes.cnpq.br/6412713158883137 |
dc.contributor.authorLattes.fl_str_mv |
http://lattes.cnpq.br/8808580706231354 |
dc.contributor.author.fl_str_mv |
Garcia, Adriano Marques |
contributor_str_mv |
Fernandes, Luiz Gustavo Leao Griebler, Dalvan Schepke, Claudio |
dc.subject.eng.fl_str_mv |
Stream Processing Framework Benchmark Multi-corre |
topic |
Stream Processing Framework Benchmark Multi-corre Processamento de Fluxo Framework Benchmark Multi-núcleo CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO |
dc.subject.por.fl_str_mv |
Processamento de Fluxo Framework Benchmark Multi-núcleo |
dc.subject.cnpq.fl_str_mv |
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO |
description |
No mundo de hoje impulsionado por dados e crescente expectativa por resultados imediatos, há uma demanda crescente por processamento de dados em tempo real/baixa latência. O processamento de stream é uma técnica que processa os dados à medida que eles se tornam disponíveis, permitindo o processamento de dados quase em tempo real. Para lidar com o processamento de grandes volumes de dados, aplicações de processamento de stream devem recorrer a técnicas de paralelismo para acelerar o processamento. Embora existam interfaces de programação paralela (IPPs) capazes de adicionar várias camadas de abstração, o paralelismo no processamento de stream ainda é uma tarefa difícil e que normalmente exige conhecimento especializado para atingir os níveis de desempenho desejados. Isso gera um grande esforço de pesquisa em direção à aumentar o desempenho do processamento paralelo de stream e tornar a programação paralela mais acessível. Tipicamente, benchmarks são usados para avaliar as IPPs e novas soluções nesse contexto. No entanto, existem várias limitações nos benchmarks existentes, incluindo a falta de benchmarks para algumas categorias de aplicações de processamento de stream, poucas ou nenhuma opção de parametrização, dificuldade em estender os benchmarks para outras IPPs, falta de métricas de desempenho adequadas, falta de preocupação com usabilidade, suporte apenas para linguagens baseadas na Java Virtual Machine (JVM), etc. Este trabalho propõe um framework chamado SPBench para criar benchmarks personalizados e avaliar o processamento paralelo de stream. Nosso principal objetivo é facilitar o processo de benchmarking no processamento de stream, incluindo a criação, compilação, execução, ajuste-fino e avaliação dos benchmarks. Portanto, esta tese de doutorado fornece as seguintes principais contribuições científicas: (I) Um framework que simplifica o benchmarking de aplicações de processamento de stream, fornecendo uma Application Programming Interface (API) e uma interface de linha de comando para simplificar, reutilizar código, personalizar, estender e avaliar diferentes aspectos ou propriedades em relação ao processamento paralelo de stream. (II) Um conjunto de benchmarks paralelos em C++ para processamento de stream que inclui aplicações do mundo real e as IPPs mais utilizadas neste contexto. (III) Um estudo comparativo abrangente das IPPs mais populares que usam o paralelismo de stream em C++. (IV) Mecanismos para simulação dinâmica de frequência de stream de dados em aplicações de processamento de stream, com um conjunto de algoritmos para gerar os padrões de frequência de stream de dados mais comumente usados na literatura e uma análise do impacto da frequência de dados no desempenho dessas aplicações. (V) Uma análise do impacto do tamanho de micro-batches no desempenho de aplicações de processamento de stream, incluindo mecanismos para controle dinâmico de batch baseado em tamanho específico ou intervalos de tempo. Testamos o framework SPBench com cinco aplicações do mundo real de processamento de vídeo/imagem, compressão de dados e detecção de fraudes. Neste trabalho nós tentamos mostrar os benefícios do SPBench usando-o em combinação com IPPs para gerar benchmarks de processamento paralelo de stream e realizar diversas análises. No geral, os resultados mostraram que as abstrações de alto nível das IPPs podem causar um grande impacto no desempenho quando abstraem mecanismos de ajuste fino. Nos experimentos de frequência de dados, a IPP FastFlow obteve mais benefícios de cenários de frequência variável do que o TBB em nossos casos de teste. Por fim, os resultados experimentais mostraram que a potencial vantagem de desempenho do uso de microbatches em ambientes multi-núcleo tende a aparecer apenas em cenários muito específicos |
publishDate |
2023 |
dc.date.accessioned.fl_str_mv |
2023-07-04T18:42:01Z |
dc.date.issued.fl_str_mv |
2023-03-31 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://tede2.pucrs.br/tede2/handle/tede/10884 |
url |
https://tede2.pucrs.br/tede2/handle/tede/10884 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.program.fl_str_mv |
-4570527706994352458 |
dc.relation.confidence.fl_str_mv |
500 500 600 |
dc.relation.cnpq.fl_str_mv |
-862078257083325301 |
dc.relation.sponsorship.fl_str_mv |
3590462550136975366 |
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 |
https://tede2.pucrs.br/tede2/bitstream/tede/10884/3/ADRIANO+MARQUES+GARCIA_TES.pdf.jpg https://tede2.pucrs.br/tede2/bitstream/tede/10884/4/ADRIANO+MARQUES+GARCIA_TES.pdf.txt https://tede2.pucrs.br/tede2/bitstream/tede/10884/2/ADRIANO+MARQUES+GARCIA_TES.pdf https://tede2.pucrs.br/tede2/bitstream/tede/10884/1/license.txt |
bitstream.checksum.fl_str_mv |
04ac53ccf33b64cce6278ac60672ce38 c5505da575fdb4e320cc3144a335ddb5 3592ef3268f8a911e418ca47190005ba 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_ |
1799765362553651200 |