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

Repositório institucional da UFSC

A- A A+

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

Mostrar registro completo

Título: Geração de código estêncil otimizado para GPUS
Autor: Pereira, Alyson Deives
Resumo: 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.
Descrição: 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.
URI: https://repositorio.ufsc.br/handle/123456789/214958
Data: 2019


Arquivos deste item

Arquivos Tamanho Formato Visualização
PGCC1150-D.pdf 241bytes PDF Visualizar/Abrir

Este item aparece na(s) seguinte(s) coleção(s)

Mostrar registro completo

Buscar DSpace


Busca avançada

Navegar

Minha conta

Estatística

Compartilhar