Geração de código estêncil otimizado para GPUS
Autor(a) principal: | |
---|---|
Data de Publicação: | 2019 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFSC |
Texto Completo: | https://repositorio.ufsc.br/handle/123456789/214958 |
Resumo: | Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2019. |
id |
UFSC_6cb224c1d2a63eda497ab3a68c6f771d |
---|---|
oai_identifier_str |
oai:repositorio.ufsc.br:123456789/214958 |
network_acronym_str |
UFSC |
network_name_str |
Repositório Institucional da UFSC |
repository_id_str |
2373 |
spelling |
Geração de código estêncil otimizado para GPUSComputaçãoUnidades de processamento gráficoDissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2019.Programas paralelos estruturados seguem padrões de computação e coordenação. Um destes padrões é o estêncil, presente em vários domínios científicos e da engenharia. Pesquisas recentes tentam explorar o uso eficiente de processadores massivamente paralelos para a execução de aplicações estêncil, tendo em vista o seu alto grau de paralelismo de dados. Dentre estes processadores, um dos mais utilizados são as Unidades de Processamento Gráfico (GPUs). As abordagens para a programação de aplicações estêncil em GPUs incluem: linguagens de baixo nível (e.g., CUDA), bibliotecas de esqueletos paralelos (e.g., PSkel) e diretivas de compilação (e.g., OpenACC). A linguagem CUDA permite um controle maior de otimizações de código, porém requer um conhecimento da arquitetura de GPUs e pode ser desafiadora para os menos experientes. As bibliotecas de esqueletos paralelos facilitam a programação e permitem explorar determinadas otimizações, no entanto requerem uma reescrita de códigos já existentes e geralmente apresentam certas restrições. Com o uso de diretivas, o programador pode anotar um código fonte já existente com as devidas diretivas, indicando os trechos de códigos que serão executados na GPU. Apesar do uso das diretivas ser mais simples do ponto de vista de programação, elas não exploram otimizações de baixo nível que podem ser obtidas ao se utilizar as abordagens anteriores. O presente trabalho propõe duas abordagens para a geração de código otimizado para GPUs. A primeira abordagem fornece uma diretiva de compilação para expor o padrão estêncil a um compilador que gerará automaticamente códigos estêncil otimizados para execução em GPUs com auxílio de uma biblioteca de esqueletos paralelos. A segunda abordagem realiza uma análise estática no código-fonte para detectar o padrão estêncil e gerar um código CUDA com otimização específicas. Experimentos utilizando códigos estênceis sequenciais mostram a aplicabilidade das abordagens propostas e revelam que é alcançado um desempenho superior em relação a abordagens existentes na literatura.<br>Abstract : Structured parallel programs follow computing and coordination patterns. One of these patterns is the stencil, present in various scientific and engineering fields. Recent research attempts to explore the efficient use of massively parallel processors for execution of stencil applications, because of its high degree of data parallelism. Among these processors, one of the most used are the Graphic Processing Units (GPUs). There are several approaches to programming stencil applications in GPUs: low-level languages (e.g., CUDA), libraries of parallel skeletons (e.g., PSkel) and compiler directives (e.g., OpenACC). The CUDA language allows greater control code optimizations, but requires knowledge of the GPU architecture and can be challenging for the less experienced. Parallel skeleton libraries facilitate programming while allowing to explore certain optimizations, however require a rewriting of already existing codes and generally present certain restrictions to the programmer. With the use of compiler directives, the programmer can use a existing source code and only annotate it with the appropriate directives, indicating the code snippets that will run on the GPU. Despite the use of compiler directives is simple, from the programming point of view, they do not exploit optimizations that can be obtained by using the previous approches. The present work proposes two approaches for the generation of optimized stencil code for GPUs. The first approach provides a compiler directive to expose the stencil pattern to a compiler that will automatically generate stencil codes optimized for execution in GPUs with the aid of a parallel skeleton library. The second approach performs a static analysis in the source code to detect the stencil pattern and generate CUDA code with specific stencil optimization. Experiments using sequential stencil codes show applicability of the proposed approaches and show that superior performance is achieved in relation to existing approaches in the literature.Castro, Márcio BastosDantas, Mário Antônio RibeiroUniversidade Federal de Santa CatarinaPereira, Alyson Deives2020-10-21T21:11:41Z2020-10-21T21:11:41Z2019info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesis71 p.| il., gráfs., tabs.application/pdf364022https://repositorio.ufsc.br/handle/123456789/214958porreponame:Repositório Institucional da UFSCinstname:Universidade Federal de Santa Catarina (UFSC)instacron:UFSCinfo:eu-repo/semantics/openAccess2020-10-21T21:11:41Zoai:repositorio.ufsc.br:123456789/214958Repositório InstitucionalPUBhttp://150.162.242.35/oai/requestopendoar:23732020-10-21T21:11:41Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)false |
dc.title.none.fl_str_mv |
Geração de código estêncil otimizado para GPUS |
title |
Geração de código estêncil otimizado para GPUS |
spellingShingle |
Geração de código estêncil otimizado para GPUS Pereira, Alyson Deives Computação Unidades de processamento gráfico |
title_short |
Geração de código estêncil otimizado para GPUS |
title_full |
Geração de código estêncil otimizado para GPUS |
title_fullStr |
Geração de código estêncil otimizado para GPUS |
title_full_unstemmed |
Geração de código estêncil otimizado para GPUS |
title_sort |
Geração de código estêncil otimizado para GPUS |
author |
Pereira, Alyson Deives |
author_facet |
Pereira, Alyson Deives |
author_role |
author |
dc.contributor.none.fl_str_mv |
Castro, Márcio Bastos Dantas, Mário Antônio Ribeiro Universidade Federal de Santa Catarina |
dc.contributor.author.fl_str_mv |
Pereira, Alyson Deives |
dc.subject.por.fl_str_mv |
Computação Unidades de processamento gráfico |
topic |
Computação Unidades de processamento gráfico |
description |
Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2019. |
publishDate |
2019 |
dc.date.none.fl_str_mv |
2019 2020-10-21T21:11:41Z 2020-10-21T21:11:41Z |
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 |
364022 https://repositorio.ufsc.br/handle/123456789/214958 |
identifier_str_mv |
364022 |
url |
https://repositorio.ufsc.br/handle/123456789/214958 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
71 p.| il., gráfs., tabs. application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFSC instname:Universidade Federal de Santa Catarina (UFSC) instacron:UFSC |
instname_str |
Universidade Federal de Santa Catarina (UFSC) |
instacron_str |
UFSC |
institution |
UFSC |
reponame_str |
Repositório Institucional da UFSC |
collection |
Repositório Institucional da UFSC |
repository.name.fl_str_mv |
Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC) |
repository.mail.fl_str_mv |
|
_version_ |
1808652096246906880 |