Estudo sobre ferramentas para programação híbrida em arquiteturas com CPU e GPU

Visualizar/ Abrir
Data
2024-12-10Autor
Marcondes, Otho José Sirtoli
Orientador
Martinotto, André Luis
Metadata
Mostrar registro completoResumo
Arquiteturas com processadores de múltiplos núcleos e com GPUs estão se tornando cada vez mais comuns nos computadores atuais. Essas arquiteturas trazem complicações no sentido de programação, pois diferentes ferramentas devem ser utilizadas para cada tipo de arquitetura. Nesse contexto, surgiram ferramentas com o objetivo de facilitar o desenvolvimento de programas paralelos para as arquiteturas com CPUs e GPUs, como por exemplo, o StarPU, OpenACC e OmpSs. Após um estudo comparativo, optou-se por avaliar o desempenho do OpenACC, devido ao fato desse ser uma ferramenta mais consolidada no mercado, tendo apoio de empresas como Nvidia, AMD e HP. O OpenACC foi avaliado a partir da paralelização de 4 aplicações: multiplicação de matrizes, método de Jacobi, busca em largura em grafos e radix sort. A seleção baseou-se no fato dessas aplicações serem comumente utilizadas em ferramentas de benchmarks que avaliam o desempenho de arquiteturas com CPUs e GPUs. Para essa avaliação, foram desenvolvidas versões sequenciais das aplicações; implementações paralelizadas para CPUs utilizando OpenMP; implementações desenvolvidas para GPUs utilizando CUDA; e aplicações paralelizadas para arquiteturas híbridas utilizando o OpenACC. Todas as implementações foram comparadas considerando o tempo de execução. As implementações utilizando OpenACC tiveram resultados satisfatórios, obtendo reduções consideráveis nos tempos de execução das aplicações. O OpenACC mostrou-se uma alternativa eficiente, pois permite aproveitar de forma satisfatória os recursos das GPUs sem a necessidade de alterações significativas no código fonte, como é frequentemente exigido em CUDA. [resumo fornecido pelo autor]