18 ago 2021
15:30 Defesa de Doutorado Integralmente a distância
Tema
Habilitando o Paralelismo de Tarefas do OpenMP em Multi-FPGAs
Aluno
Ramon Santos Nepomuceno
Orientador / Docente
Guido Costa Souza de Araújo
Breve resumo
Os aceleradores de hardware baseados em FPGA têm recebido uma crescente atenção nos últimos anos. Um dos principais motivos para isso é que seus recursos reconfiguráveis facilitam a adaptação do acelerador a diferentes tipos de cargas de trabalho. Em alguns casos, os aceleradores baseados em FPGA fornecem maior desempenho computacional e eficiência energética. Foi relatado que o offload para FPGA alcança um melhor desempenho quando comparado GPUs e CPUs para algumas aplicações, como Fast Fourier Transform. Esse desempenho pode ser ainda maior se conectarmos vários FPGAs criando um cluster Multi-FPGA. No entanto, programar esses sistemas heterogêneos é um empreendimento desafiador que ainda requer esforços de pesquisa e desenvolvimento para torná-lo realmente simples. O modelo de programação baseado em tarefas OpenMP é uma boa escolha para programar sistema Multi-FPGA Heterogêneos. Isso advém da capacidade deste modelo de expor um grau mais alto de paralelismo que combina: (a) offload de computação para aceleradores; (b) dependências explícitas de dados; e (c) definição das regiões de código para cada dispositivo específico. Com base nisso, o trabalho desta tese estende a infraestrutura LLVM/OpenMP existente, bem como propõe uma plataforma de hardware para ajudar o programador a expressar facilmente o offload e o uso de IP-cores disponíveis em um código binário reconfigurável pré-existente (bitstream). Para isto, foi utilizada uma metodologia de co-design, que implementa a arquitetura de hardware e software em paralelo. No lado do software, duas modificações principais foram feitas na implementação do OpenMP: (a) construir um plugin VC709 na biblioteca libomptarget; e (b) modificar o algoritmo de tempo de execução que gerencia o grafo de tarefas. No lado do hardware, foi criada uma infraestrutura baseada no Target Reference Design (TRD) da placa Xilinx VC709. As principais contribuições desta tese são: (a) um novo plugin Clang/LLVM que entende placas FPGA como dispositivos OpenMP, e usa a diretiva OpenMP declare variant para especificar IPs-cores de hardware; (b) Um mecanismo baseado na dependência de tarefa OpenMP e no modelo de transferência de computação que permite a comunicação transparente de IPs-cores em uma arquitetura Multi-FPGA; (c) Uma arquitetura em hardware, baseada no Target Reference Design da placa VC709, capaz de executar tarefas OpenMP utilizando preexistentes IP-core; (d) Um modelo de programação baseado em paralelismo de tarefas OpenMP, que torna simples mover dados entre FPGAs, CPUs ou outros dispositivos de aceleração (por exemplo, GPUs), e que permite ao programador usar um único modelo de programação para executar sua aplicação em uma verdadeira arquitetura heterogênea. Resultados experimentais para um conjunto de aplicações de stencil em OpenMP que executaram em uma plataforma Multi-FPGA com 6 placas Xilinx VC709 interconectadas através de links de fibra ótica, mostraram acelerações quase lineares conforme o número de FPGAs e IP-cores por FPGA aumenta.
Banca examinadora
Titulares:
Guido Costa Souza de Araújo IC/UNICAMP
Lucas Francisco Wanner IC/UNICAMP
Vanderlei Bonato ICMC/USP
Nahri Balesdent Moreano FACOM/UFMS
Ricardo dos Santos Ferreira UFV
Suplentes:
Alexandro José Baldassin UNESP
Rodolfo Jardim de Azevedo IC/UNICAMP
Ricardo Pannain IC/UNICAMP