Geração de código estêncil otimizado para GPUS

Detalhes bibliográficos
Autor(a) principal: Pereira, Alyson Deives
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