Decisão automatizada de mapeamento de tarefas com OpenACC em arquiteturas paralelas híbridas
Fecha
2016-03-28Metadatos
Mostrar el registro completo del ítemResumen
O presente trabalho de mestrado concentrou-se no desenvolvimento de um método de
decisão com etapas automatizadas, a fim de auxiliar o desenvolvedor a tomar a seguinte decisão
em um dado sistema híbrido: em qual unidade do sistema deve ser mapeada uma determinada
tarefa, para que se obtenha o melhor desempenho no hardware disponível? Os programas paralelos
alvo deste trabalho devem ser desenvolvidos com o padrão OpenACC, que usa diretivas de
compilação para expressar o paralelismo e foi criado para facilitar a programação em sistemas
híbridos formados por CPU e GPU.A abordagem utilizada neste trabalho é empírica, baseada
em observações do desempenho de programas em diferentes configurações e com diferentes
parâmetros e dados de entrada. As propostas formuladas não têm por objetivo garantir a melhor
decisão de mapeamento, mas sim abreviar, na medida do possível, o processo de decisão.
Visando aprofundar esta questão de desempenho, no início deste trabalho de mestrado foram
feitos experimentos com um benchmark para OpenACC. A abordagem adotada neste trabalho
tem por hipótese que o desempenho em CPU e em GPU possa ser estimado para uma determinada
tarefa, em um dado sistema híbrido real. Essa estimativa pode ser aproximada pois,
no pior dos casos, será equivalente a uma estimativa errônea realizada manualmente, que será
percebida e poderá ser corrigida para execuções subsequentes. Dessa forma propõe que a estimativa
de desempenho em CPU e GPU seja feita baseando-se conjuntamente nos seguintes
critérios:tamanho dos dados de entrada, complexidade no tempo e no espaço e desempenho do
hardware alvo em benchmarks. Para formar uma base de apoio à decisão, propõe-se que seja
construída e mantida uma tabela em que cada linha é um benchmark em OpenACC, possivelmente
pertencente a uma suite de benchmarks como o EPCC. Sua criação, que requer várias
execuções de alguns benchmarks, ocorre uma única vez para um dado sistema híbrido e seus
dados são, potencialmente, aproveitados em diferentes aplicações e execuções.Visando atingir
o objetivo de abreviar o processo e exigir um mínimo de interferência do desenvolvedor,
desenvolveu-se uma ferramenta que automatiza partes desse processo. Foram escolhidos três
programas, pertencentes ao benchmark Polybench. São eles: gramschmidt (decomposição
pelo método de Gram-Schmidt), lu (decomposição LU) e durbin (solução de sistema com
matriz de Toeplitz). Cada um deles possui complexidade computacional diferente. A eficácia
da decisão automatizada pode ser verificada comparando-se os tempos de execução entre Host,
Device e da Ferramenta. A decisão automatizada realizada pela ferramenta determinou que a
execução da função de Gram-Schmidt fosse na GPU quando a ordem da matriz fosse maior ou
igual 400. A diferença entre a ordem da matriz observada 300 para ordem calculada 400 é devida
à diferença entre a quantidade de operações aritméticas estimadas da função de correlação
e a função de Gram-Schmidt. A eficácia da ferramenta de decisão, que tem por base a análise
de um benchmark é restringida aos algoritmos que possuem complexidade computacional no
tempo similar ao do benchmark. As diferenças dos valores da memória alocada pelo benchmark
e o programa paralelizado devem-se a parâmetros que não são facilmente mensuráveis, como
por exemplo a dependência entre as variáveis. Portanto recomenda-se que a escolha do valor da
memória utilizada como critério de decisão seja feita através de um processo iterativo, tomando
como parâmetro inicial o valor obtido na análise do benchmark.
Colecciones
El ítem tiene asociados los siguientes ficheros de licencia: