Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/83665

TítuloIntegração de aceleradores locais - remotos em aplicações paralelas e distribuídas com HPX
Autor(es)Barbosa, Pedro André Dias
Orientador(es)Pina, António Manuel Silva
Pereira, André Martins
Palavras-chaveComputação paralela
Computação de alto desempenho
ParalleX
HPX
HPXCL
CUDA
Parallel computing
High-performance computing
Data2022
Resumo(s)Atualmente, em ambientes de computação de alto desempenho, a utilização de aceleradores e co-processadores é cada vez mais relevante, representando uma grande percentagem do poder computacional do sistema. Neste contexto, a utilização de ferramentas tradicionais, tais como o OpenMP e MPI não é a mais adequada face ao modelo de programação daqueles dispositivos. O HPX é uma biblioteca open-source em C++ que surge como a primeira implementação do modelo de execução ParalleX, que se baseia num sistema de comunicação message-driven e num modelo de execução por tarefas. Esta biblioteca visa superar os principais problemas enfrentados em computação de alto desempenho tais como a latência, dificuldade de integração de aceleradores, inanição, entre outros. O HPXCL é uma extensão da biblioteca HPX, orientada à integração de aceleradores em sistemas que combinem CPUs e GPUs. O modelo assynchronous many tasks do HPX é estendido com a transferência de dados entre o host e o GPU (e vice versa) e a execução assíncrona de kernels, que pretende contornar os problemas dos modelos atuais. O HPXCL permite ainda ao utilizador a manipulação dos aceleradores do sistema, neste caso GPUs, através de objetos. Estes objetos permitem a criação de programas, que fazem o lançamento do kernel, e a criação de buffers utilizados para efetuar a comunicação de dados entre o host e o GPU. A avaliação dos resultados obtidos recorrendo ao HPXCL foi realizada através da comparação do desempenho do mesmo com versões de controlo, neste caso uma versão em CUDA puro, e uma versão CUDA com utilização da biblioteca NVRTC. Esta última versão, à semelhança do HPXCL, executa a compilação do kernel durante a execução do programa, permitindo obter uma melhor comparação do que com a versão CUDA. Para além disso também foi feita uma análise do comportamento do algoritmo, para diferentes cargas computacionais para verificar a sua viabilidade dependendo das operações que terá de efetuar. Finalmente foi feito o profiling de todas as versões, recorrendo às ferramentas NVPROF e NSIGHT da NVIDIA, e ao APEX, para permitir justificar o comportamento do algoritmo e as diferenças de desempenho que pudessem ser eventualmente observadas. O código desenvolvido ao longo da dissertação pode ser consultado no repositório https://github.com/PADBarbosa/Tese.
Currently, in the context of High-Performance Computing, the usage of accelerators and coprocessors is increasingly fundamental, representing a big percentage of the computational power of a system. In this context, the usage of the traditional tools such as OpenMP and MPI, isn’t the most adequate (in view of the programming model of those devices.) HPX is an open-source C++ library that appears as the first implementation of the ParalleX execution model, which is based in a message-driven communication system and an execution model by tasks. This library aims to overcome the main problems faced by in High-Performance Computing such as latency, difficulty in integrating accelerators, starvation, among others. HPXCL is an exension of the HPX library, oriented to the integration of accelerators in systems that combine both CPUs and GPUs. The HPX assynchronous many tasks model is extended with the transfer of data between the host and the GPU (and vice versa) and the asynchronous execution of kernels, which intends to work around the problems of the current models. HPXCL also allows the user to manipulate system accelerators, in this case GPUs, through objects. These objects allow the creation of programs, that launch the kernel execution, and the creation of buffers which are used for the communication of data between host and GPU. The evaluation of the results obtained using HPXCL was performed by comparing its performance with the control versions, in this case a version using pure CUDA, and a CUDA version using the NVRTC library. This last version, similarly to HPXCL, executes the kernel compilarion during runtime, allowing for a better comparison than with the pure CUDA version. Furthermore, an analysis of the behaviour of the NBody simulation algorithm was also carried out, for different computational loads to verify its viability depending on the operations that will have to be carried out. Finally, all versions were profiled, using NVIDIA’s NVPROF and NSIGHT tools, and APEX, in order to justify the algorithm’s behavior and the performance differences that could eventually be observed. The code developed throughout this dissertation can be consulted in the repository https://github.com/PADBarbosa/Tese.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado integrado em Engenharia Informática
URIhttps://hdl.handle.net/1822/83665
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Pedro-André-Dias-Barbosa-dissertação-final.pdf3,66 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID