Distributed shared memory on heterogeneous CPUs+GPUs platforms

Ricardo N. Alves · Portuguese National Funding Agency for Science, Research and Technology (RCAAP Project by FCT) · 2012

Apesar do processo de elaboração de uma tese de mestrado seja algo solitário por natureza, esta dissertação reúne contribuições de várias pessoas.Durante o meu mestrado contei com o apoio e confiança de imensas pessoas, sem as quais este projeto não teria sido possível.Ao meu orientador, professor Luís Paulo Santos, agradeço a sua paciência, disponibilidade e as diversas discussões e contribuições que foram muito valiosas para este trabalho.I would also like to thank my co-advisor, professor Donald Fussell, for the opportunity and trust invested in me.Quero também estender este agradecimento aos professores Alberto Proença e José Nuno Oliveira que, apesar de terem contribuído de uma forma mais indireta nesta dissertação, assumiram um papel de destaque na minha formação ao longo de todo o meu percurso académico na universidade do Minho.Aos meu colegas do LabCG agradeço o apoio e a disponibilidade para debater e trocar ideias.Mas acima de tudo, agradeço a amizade e o ambiente que criaram no laboratório que tornou todo o processo de elaboração desta dissertação muito mais agradável.Em especial, agradeço o contributo e apoio do engenheiro João Barbosa, que foram essenciais para a conclusão deste projeto.Por último, agradeço aos meus pais, familiares e amigos o apoio e incentivo que me deram, não só neste último ano, mas ao longo de todo o meu percurso académico e pessoal.Um humilde obrigado para amortizar uma dívida que nunca vou conseguir pagar. ResumoDesenvolver aplicações para plataformas heterogéneas pode dificultar significativamente o processo de codificação, visto que o uso de dispositivos de computação diferentes significa ter que lidar com arquiteturas diferentes, modelos de programação e organização de memória diversos, espaços de endereçamento de memória disjuntos, etc. Este documento propõe que o processo de desenvolvimento pode ser simplificado ao virtualizar um ambiente de memória partilhada tradicional em cima de um sistema de memoria heterogéneo distribuído e expondo um modelo de memória unificado ao programador.O sistema de memória liberta o programador da gestão manual dos dados e permite o uso de memória dinâmica acessível por todos os dispositivos.O sistema de memória proposto foi implementado e validado na framework GAMA usando três algoritmos para testar o sistema: SAXPY, simulação N-Body "all-pairs" e Barnes-Hut.Estes algoritmos foram usados para avaliar o desempenho e a escalabilidade da framework quando equipada com o sistema de memória proposto.Os resultados mostram que, de uma forma geral, o sistema de memória melhorou o desempenho de todos os algoritmos.O sistema de memória provou ser mais útil em algoritmos com uma alta razão de computação sobre acessos a memória e especialmente em algoritmos irregulares ao melhorar também a escalabilidade.O alocador de memória paralelo mostrou óptimos resultados quando usado apenas no CPU, mas teve problemas na velocidade de alocação quando foram adicionados GPUs ao sistema.

Read the paper · More papers on PaperTik