Exportar este item: EndNote BibTex

Use este identificador para citar ou linkar para este item: https://tede2.pucrs.br/tede2/handle/tede/10347
Tipo do documento: Dissertação
Título: Data and stream parallelism optimizations on GPUs
Autor: Araujo, Gabriell Alves de 
Primeiro orientador: Fernandes, Luiz Gustavo Leão
Primeiro coorientador: Griebler, Dalvan Jair
Resumo: Nowadays, most computers are equipped with Graphics Processing Units (GPUs) to provide massive-scale parallelism at a low cost. Parallel programming is necessary to exploit this architectural capacity fully. However, it represents a challenge for programmers since it requires refactoring algorithms, designing parallelism techniques, and hardwarespecific knowledge. Moreover, GPU parallelism is even more challenging since GPUs have peculiar hardware characteristics and employ a parallelism paradigm called many-core programming. In this sense, parallel computing research has focused on studying efficient programming techniques for GPUs and developing abstractions that reduce the effort when writing parallel code. SPar is a domain-specific language (DSL) that goes in this direction. Programmers can use SPar to express stream parallelism in a simpler way without significantly impacting performance. SPar offers high-level abstractions via code annotations while the SPar compiler generates parallel code. SPar recently received an extension to allow parallel code generation for CPUs and GPUs in stream applications. The CPU cores control the flow of data in the generated code. At the same time, the GPU applies massive parallelism in the computation of each stream element. To this end, SPar generates code for an intermediate library called GSParLib, a pattern-oriented parallel API that provides a unified programming model targeting CUDA and OpenCL runtime, allowing parallelism exploitation of different vendor GPUs. However, the GPU support for both SPar and GSParLib is still in its initial steps; they provide only basic features, and no studies have comprehensively evaluated SPar and GSParLib’s performance. This work contributes by parallelizing representative high-performance computing (HPC) benchmarks, implementing new features and optimizations for GPUs in the GSParLib and SPar, and presenting a method for providing agnostic frameworks independent of low-level programming interfaces. Our set of improvements covers most of the critical limitations of GSParLib regarding performance and programmability. In our experiments, the optimized version of GSParLib achieved up to 54,500.00% of speedup improvement over the original version of GSParLib on data parallelism benchmarks and up to 718,43% of throughput improvement on stream parallelism benchmarks.
Abstract: Nos dias de hoje, a maioria dos computadores são equipados com unidades de processamento gráfico (GPUs) para prover capacidade massiva de paralelismo a baixo custo. Para explorar completamente a capacidade destas arquiteturas é necessário o uso de programação paralela. No entanto, isso representa um desafio para os programadores, pois requer a refatoração de algoritmos, técnicas de paralelismo e conhecimento específico sobre o hardware. Além disso, o paralelismo das GPUs é ainda mais desafiador, pois GPUs possuem características de hardware peculiares, e outro paradigma de paralelismo chamado de programação many-core. Nesse sentido, pesquisas de computação paralela tem se concentrado no estudo de técnicas de programação eficientes para GPUs, e também no desenvolvimento de abstrações que diminuem o esforço de programação. SPar é uma linguagem específica de domínio (DSL) que segue essa direção de pesquisa. Programadores podem utilizar a SPar para expressar paralelismo de stream sem impactar significativamente o desempenho. A SPar oferece abstrações de alto nível através de anotações no código-fonte, enquanto o compilador da SPar gera código paralelo. Recentemente foi adicionada uma extensão na SPar, a qual permite que seja gerado código paralelo para CPUs e GPUs em aplicações de stream. Os núcleos da CPU controlam o fluxo de dados, e a GPU aplica paralelismo massivo na computação de cada elemento do fluxo de dados. Para este fim, a SPar gera código para uma biblioteca intermediária chamada GSParLib. GSParLib é uma API paralela orientada a padrões que provê um modelo único de programação para a runtime dos frameworks CUDA e OpenCL, permitindo a exploração do paralelismo em GPUs de diferentes fabricantes. Porém, o suporte para GPUs em ambas SPar e GSParLib ainda está em seus passos iniciais; SPar e GSParLib oferecem apenas funcionalidades básicas, e nenhum estudo avaliou o desempenho de forma abrangente. A contribuição deste trabalho concentra-se em paralelizar benchmarks representativos da área de computação de alto-desempenho (HPC), fornecer novos recursos e otimizações para GPUs na GSParLib e SPar, e apresentar um método para prover frameworks que sejam agnósticos e independentes de interfaces de programação de baixo nível. O conjunto de melhorias cobre a maioria das limitações críticas de desempenho e programabilidade da GSParLib. Nos experimentos deste trabalho, a versão otimizada da GSParLib foi capaz de atingir até 54.500,00% de melhoria no speedup em relação à versão original da GSParLib nos benchmarks de paralelismo de dados e até 718,43% de melhoria no throughput nos benchmarks de paralelismo de stream.
Palavras-chave: Parallel Programming
GPU Programming
Heterogeneous Computing
Data Parallelism
Stream Parallelism
Structured Parallel Programming
Parallel Patterns
Benchmarks
Stream Processing Applications
Domain-specific Language
Algorithmic Skeletons
Performance Evaluation
High Performance Computing
C
C++
CUDA
OpenCL
Programação Paralela
Programação de GPUs
Computação Heterogênea
Paralelismo de Dados
Paralelismo de Stream
Programação Paralela Estruturada
Padrões Paralelos
Benchmarks
Aplicações de Processamento de Stream
Linguagem Específica de Domínio
Esqueletos Algorítmicos
Avaliação de Desempenho
Computação de Alto Desempenho
C
C++
CUDA
OpenCL
Área(s) do CNPq: CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
Idioma: eng
País: Brasil
Instituição: Pontifícia Universidade Católica do Rio Grande do Sul
Sigla da instituição: PUCRS
Departamento: Escola Politécnica
Programa: Programa de Pós-Graduação em Ciência da Computação
Tipo de acesso: Acesso Aberto
Restrição de acesso: Trabalho não apresenta restrição para publicação
URI: https://tede2.pucrs.br/tede2/handle/tede/10347
Data de defesa: 31-Mar-2022
Aparece nas coleções:Programa de Pós-Graduação em Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
GABRIELL_ALVES_DE_ARAUJO_DIS.pdfGABRIELL_ALVES_DE_ARAUJO_DIS2,9 MBAdobe PDFThumbnail

Baixar/Abrir Pré-Visualizar


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.