Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/83665
Título: | Integraçã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-chave: | Computação paralela Computação de alto desempenho ParalleX HPX HPXCL CUDA Parallel computing High-performance computing |
Data: | 2022 |
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. |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de mestrado integrado em Engenharia Informática |
URI: | https://hdl.handle.net/1822/83665 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Pedro-André-Dias-Barbosa-dissertação-final.pdf | 3,66 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons