Data coherence analysis and optimization
Rafael Cardoso Fernandes Sousa · 2017
A ata da defesa com as respectivas assinaturas dos membros da banca encontra-se no processo de vida acadêmica do aluno.Campinas, 24 de março de 2017 AgradecimentosPrimeiramente, gostaria de agradecer a minha família, por estarem sempre do meu lado, me auxiliando e me guiando nos meus momentos mais difíceis.Em especial, agradeçolhes por todo o apoio e auxilio dado, visto que sempre foram de grande importância nas minhas decisões e conquistas.Gostaria também de agradecer a minha namorada, que além de ter me apoiado por durante todo esse tempo, esteve também sempre me dando conselhos e sugestões nas minhas tomadas de decisões.Sobretudo, esteve também durante todo esse período presente, auxiliando no planejamento do nosso futuro.Em especial, gostaria de agradecer tanto o meu orientador quanto o meu coorientador pelo aprendizado que tive advindo de ambos.Vale ressaltar que a paciência e experiência de ambos foram sempre de grande importância no desenvolvimento da minha dissertação.Agradeco fortemente o apoio de todos os amigos que fiz no IC e, em especial, àqueles do Laboratório de Sistemas Computacionais (LSC), por sempre se disponibilizarem, auxiliando na resolução das minhas dúvidas.Por fim, gostaria de agradecer a Samsung pelo apoio financeiro dado durante todo o desenvolvimento do projeto.E, em especial, toda a secretária do IC/UNICAMP, por terem me auxiliado, pacientemente, em todos os processos burocráticos da UNICAMP. ResumoEmbora a computação heterogenea tenha permitido ganhos de desempenho (speed-ups) impressionantes, o conhecimento sobre a arquitetura dos dispositivos aceleradores para colher todos os benefícios de seu hardware ainda é algo crítico.A programação em cima dessas arquiteturas é complexa, propensa a erros e geralmente é feita por meio de linguagens especializadas (por exemplo, CUDA) ou bibliotecas (por exemplo, OpenCL).Em particular, para os programadores não especialistas, o custo de mover e manter dados coerentes entre host e o dispositivo acelerador (device) pode facilmente eliminar quaisquer ganhos de desempenho alcançados pela aceleração.Esta tese propõe Análise de Coerência de Dados (DCA), uma simples e útil técnica de análise de fluxo de dados que determina como as variáveis são usadas pelo host/device em cada ponto do programa.Ela também introduz a Otimização de Coerência de Dados (DCO), um algoritmo baseado em DCA que: (a) usa informações das variáveis para alocar buffers OpenCL compartilhados entre o host e o device; e (b) inserir chamadas de função OpenCL apropriadas em pontos do programa de modo a minimizar o número de operações de coerência de dados.O DCO foi implementado no compilador GPUClang LLVM que é capaz de traduzir automaticamente os loops anotados do OpenMP 4.X para kernels OpenCL, escondendo assim toda a complexidade da programação direta no OpenCL.Os resultados experimentais revelam que, enquanto GPUClang mostra desempenho de até 78x, GPUClang com DCO consegue speed-ups de até 84x em programas do benchmark Polybench rodando em um Exynos 8890 Octacore CPU com ARM Mali-T880 MP12 GPU e até 92x em um Processador dual core Intel Core i5 de 2,4 GHz equipado com uma unidade Intel Iris GPU.