Data and stream parallelism optimizations on GPUs

Detalhes bibliográficos
Ano de defesa: 2022
Autor(a) principal: Araujo, Gabriell Alves de
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Pontifícia Universidade Católica do Rio Grande do Sul
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
C
C++
Link de acesso: https://tede2.pucrs.br/tede2/handle/tede/10347
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.
id P_RS_d5c905fd2ea095ea961c0d9c39b5bc50
oai_identifier_str oai:tede2.pucrs.br:tede/10347
network_acronym_str P_RS
network_name_str Biblioteca Digital de Teses e Dissertações da PUC_RS
repository_id_str
spelling Data and stream parallelism optimizations on GPUsParallel ProgrammingGPU ProgrammingHeterogeneous ComputingData ParallelismStream ParallelismStructured Parallel ProgrammingParallel PatternsBenchmarksStream Processing ApplicationsDomain-specific LanguageAlgorithmic SkeletonsPerformance EvaluationHigh Performance ComputingCC++CUDAOpenCLProgramação ParalelaProgramação de GPUsComputação HeterogêneaParalelismo de DadosParalelismo de StreamProgramação Paralela EstruturadaPadrões ParalelosBenchmarksAplicações de Processamento de StreamLinguagem Específica de DomínioEsqueletos AlgorítmicosAvaliação de DesempenhoComputação de Alto DesempenhoCC++CUDAOpenCLCIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAONowadays, 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.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.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPESPontifícia Universidade Católica do Rio Grande do SulEscola PolitécnicaBrasilPUCRSPrograma de Pós-Graduação em Ciência da ComputaçãoFernandes, Luiz Gustavo Leãohttp://lattes.cnpq.br/5979862734558983Griebler, Dalvan Jairhttp://lattes.cnpq.br/1989039890812573Araujo, Gabriell Alves de2022-07-11T14:21:58Z2022-03-31info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://tede2.pucrs.br/tede2/handle/tede/10347enginfo: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_RS2022-07-11T15:00:16Zoai:tede2.pucrs.br:tede/10347Biblioteca Digital de Teses e Dissertaçõeshttp://tede2.pucrs.br/tede2/PRIhttps://tede2.pucrs.br/oai/requestbiblioteca.central@pucrs.br||opendoar:2022-07-11T15:00:16Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)false
dc.title.none.fl_str_mv Data and stream parallelism optimizations on GPUs
title Data and stream parallelism optimizations on GPUs
spellingShingle Data and stream parallelism optimizations on GPUs
Araujo, Gabriell Alves de
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
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
title_short Data and stream parallelism optimizations on GPUs
title_full Data and stream parallelism optimizations on GPUs
title_fullStr Data and stream parallelism optimizations on GPUs
title_full_unstemmed Data and stream parallelism optimizations on GPUs
title_sort Data and stream parallelism optimizations on GPUs
author Araujo, Gabriell Alves de
author_facet Araujo, Gabriell Alves de
author_role author
dc.contributor.none.fl_str_mv Fernandes, Luiz Gustavo Leão
http://lattes.cnpq.br/5979862734558983
Griebler, Dalvan Jair
http://lattes.cnpq.br/1989039890812573
dc.contributor.author.fl_str_mv Araujo, Gabriell Alves de
dc.subject.por.fl_str_mv 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
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
topic 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
CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
description 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.
publishDate 2022
dc.date.none.fl_str_mv 2022-07-11T14:21:58Z
2022-03-31
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 https://tede2.pucrs.br/tede2/handle/tede/10347
url https://tede2.pucrs.br/tede2/handle/tede/10347
dc.language.iso.fl_str_mv eng
language eng
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
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
Escola Politécnica
Brasil
PUCRS
Programa de Pós-Graduação em Ciência da Computação
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
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_ 1850041309538025472