GPU support for automatic generation of finite-differences Stencil Kernels

Detalhes bibliográficos
Ano de defesa: 2020
Autor(a) principal: Rodrigues, Vitor Hugo Mickus
Orientador(a): Souza, Samuel Xavier de
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal do Rio Grande do Norte
Programa de Pós-Graduação: PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
GPU
Link de acesso: https://repositorio.ufrn.br/handle/123456789/30252
Resumo: A obtenção de soluções numéricas para algoritmos de inversão sísmica como Inversão Completa da Forma de Onda (FWI, do inglês Full-Waveform Inversion) e Migração Reversa no Tempo (RTM, do inglês Reverse Time Migration), pode ser acelerada por arquiteturas que possuem um alto grau de paralelismo, como unidades de processamento gráfico (GPU, do inglês Graphical Processing Units). Porém, o rápido desenvolvimento de novas arquiteturas e tecnologias dificultam a manutenção e atualização das soluções implementadas. Neste trabalho, o transpilador de código fonte aberto chamado Devito é estendido para habilitar conversão automática de kernels de diferenças finitas para arquiteturas GPU. O framework Oxford Parallel Domain Specific Language (OP-DSL) foi utilizado para construção de um novo backend para o Devito. A solução implementada fora validada nas GPUs NVIDIAR GTX Titan Z e NVIDIAR Tesla V100. O desempenho da implementação fora medido em termos de tempo de execução, e em termos de desempenho relativo através do modelo de roofline. Os testes foram feitos para diversos níveis de discretização de ordem espacial em um estêncil de propagação de onda acústica isotrópica 3D sobre uma malha de 2563. Os resultados demonstram que os kernels produzidos alcançaram aproximadamente 63% do desempenho máximo da V100 e cerca de 24% do desempenho máximo na GTX Titan Z. O estudo ainda revela que otimizar a transferência de dados entre CPU e GPU é um dos maiores desafios para alavancar o desempenho nas arquiteturas avaliadas.