Ir para o conteúdo PPGCC Ir para o menu PPGCC Ir para a busca no site PPGCC Ir para o rodapé PPGCC
  • Acessibilidade
  • Sítios da UFSM
  • Área restrita

Aviso de Conectividade Saber Mais

Início do conteúdo

Defesa de Dissertação 22/08 – PROGRAMAÇÃO PARALELA HÍBRIDA PARA CPU E GPU: UMA AVALIAÇÃO DO OPENACC FRENTE A OPENMP E CUDA



Título: PROGRAMAÇÃO PARALELA HÍBRIDA PARA CPU E GPU: UMA AVALIAÇÃO DO OPENACC FRENTE A OPENMP E CUDA

Aluno: MAURÍCIO SULZBACH

Orientador: Benhur de Oliveira Stein

Data: 22/08/2014
Horário: 14:00h
Local: Sala 321-A

Banca:
Dr. BENHUR DE OLIVEIRA STEIN – Presidente/Co-orientador (UFSM)
Drª. ANDREA SCHWERTNER CHARAO – UFSM
Drª. MÁRCIA CRISTINA CERA – UNIPAMPA
Dr. JOAO VICENTE FERREIRA LIMA – UFSM (Suplente)

Resumo:
Como consequência do avanço das arquiteturas de CPU e GPU, nos últimos anos houve um aumento no número de APIs de programação paralela para os dois dispositivos. Enquanto que OpenMP é utilizada no processamento paralelo em CPU, CUDA e OpenACC são empregadas no processamento paralelo em GPU. Na programação para GPU, CUDA apresenta um modelo baseado em funções que deixam o código fonte extenso e propenso a erros, além de acarretar uma baixa produtividade no desenvolvimento. Objetivando suprir esses problemas e sendo uma alternativa à utilização de CUDA surgiu o OpenACC. Semelhante ao OpenMP, essa API disponibiliza diretivas que facilitam o desenvolvimento de aplicações paralelas, porém para execução em GPU. Como forma de aproveitar as características de paralelismo de CPU e GPU, unidas a APIs de programação paralela, tornase possível desenvolver algoritmos híbridos que dividam o processamento nos dois dispositivos, podendo dessa forma, ser uma alternativa para o ganho de desempenho. Nesse sentido, este trabalho objetiva verificar se as facilidades que o OpenACC introduz também refletem positivamente na programação híbrida com OpenMP, se comparado ao modelo OpenMP + CUDA. Além disso, o trabalho visa relatar as limitações nos dois modelos de programação híbrida que possam influenciar no desempenho ou no desenvolvimento de aplicações. Como forma de cumprir essas metas, este trabalho apresenta o desenvolvimento de três algoritmos paralelos híbridos baseados nos algoritmos do benchmark Rodinia, a saber, RNG, Hotspot e SRAD, utilizando os modelos híbridos OpenMP + CUDA e OpenMP + OpenACC. Nesses algoritmos é atribuída ao OpenMP a execução paralela em CPU, enquanto que CUDA e OpenACC são responsáveis pelo processamento paralelo em GPU. Após as execuções dos algoritmos híbridos foram analisados o desempenho, a eficiência e a divisão da execução em cada um dos dispositivos. Verificou-se através das execuções dos algoritmos híbridos que nos dois modelos de programação propostos foi possível superar o desempenho de uma aplicação paralela em uma única API, com execução em apenas um dos dispositivos. Além disso, nos algoritmos híbridos RNG e Hotspot o desempenho de CUDA foi superior ao desempenho de OpenACC, enquanto que no algoritmo SRAD a API OpenACC apresentou uma execução mais rápida, se comparada à API CUDA.

Palavras-chave: CPU. GPU. OpenMP. CUDA. OpenACC. Programação paralela híbrida.
Desempenho.


Publicações Recentes