Utilize este identificador para citar ou criar um atalho para este documento: https://hdl.handle.net/10923/25609
Tipo: doctoralThesis
Título: Easing the benchmarking of parallel stream processing on multi-cores
$$Bfacilitando A Avaliação Do Processamento Paralelo De Stream Em Arquiteturas Multi-Núcleo
Autor(es): Garcia, Adriano Marques
Orientador: Fernandes, Luiz Gustavo Leão
Griebler, Dalvan Jair
Schepke, Claudio
Editora: Pontifícia Universidade Católica do Rio Grande do Sul
Programa: Programa de Pós-Graduação em Ciência da Computação
Data de Publicação: 2023
Palavras-chave: C++ (LINGUAGEM DE PROGRAMAÇÃO)
PROCESSAMENTO PARALELO
INFORMÁTICA
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.
In 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.
URI: https://hdl.handle.net/10923/25609
Aparece nas Coleções:Dissertação e Tese

Arquivos neste item:
Arquivo Descrição TamanhoFormato 
000506189-Texto+completo-0.pdfTexto completo4,86 MBAdobe PDFAbrir
Exibir


Todos os itens no Repositório da PUCRS estão protegidos por copyright, com todos os direitos reservados, e estão licenciados com uma Licença Creative Commons - Atribuição-NãoComercial 4.0 Internacional. Saiba mais.