“Inteligência Artificial: A Nova Fronteira da Ciência Brasileira”

19 a 24 de outubro de 2020

Trabalho 13181

ISSN 2237-9045
Instituição Universidade Federal de Viçosa
Nível Graduação
Modalidade Pesquisa
Área de conhecimento Ciências Exatas e Tecnológicas
Área temática Ciência da computação
Setor Instituto de Ciências Exatas e Tecnológicas - Campus Florestal
Bolsa PIBIC/CNPq
Conclusão de bolsa Sim
Apoio financeiro CNPq
Primeiro autor Maria Dalila Vieira
Orientador JOSE AUGUSTO MIRANDA NACIF
Outros membros Josué Nunes Campos, Mateus Pinto da Silva, Michael Canesche, RICARDO DOS SANTOS FERREIRA
Título Mapeamento de algoritmos para Coarse-Grained Reconfigurable Architecture
Resumo Atualmente, as dimensões dos transistores atingem limites físicos em escala atômica. Dessa forma, apenas colocar mais transistores em um chip deixa de ser um bom modo de melhorar performance. Em razão disso, aceleradores em hardware se tornam uma alternativa para isso. Algumas das tecnologias mais populares de aceleradores em hardware são Graphical Processing Units(GPUs) e Field Programmable Gate Arrays(FPGAs). Dentre estes, os GPUs se destacam no cenário industrial pelo alto desempenho e interface de programação bem definida. As FPGAs, por outro lado realizam paralelismo por pipeline, e são reconfiguráveis a nível lógico. Porém, tornar o desenvolvimento para FPGAs acessível aos programadores ainda é um desafio. Uma alternativa é usar uma sobreposição virtual de Coarse-Grained Reconfigurable Architecture(CGRA). As CGRAs são malhas de processadores, e são reconfiguráveis por meio de conjuntos de instruções que seguem o modelo de fluxo de dados. Este pode ser representado como grafo, cujas operações precisam ser posicionadas na CGRA e as dependências entre operações devem ter suas rotas demarcadas. No entanto, ferramentas para tais funcionalidades ainda são escassas. Dado o contexto, propomos uma arquitetura que reúne sobre a FPGA: CGRA virtual, unidade de mapeamento, unidade de roteamento. Implementamos ferramentas de posicionamento e roteamento para as arquiteturas mesh e mesh-plus. Utilizamos uma estratégia gulosa que define posições adjacentes na arquitetura para nós de uma mesma aresta do grafo de operações. E para o roteamento, estabelecemos uma estratégia baseada no algoritmo de Dijkstra que busca equilibrar os recursos de conexões e unidades lógicas da CGRA. Por fim, ambos algoritmos foram sintetizados em uma versão HDL artesanal, considerando as particularidades do hardware. E também, criamos versões em C para ferramentas High Level Synthesis(HLS). Para fins de comparação e estudo, utilizamos as ferramentas LegUp, Intel e Vivado. Alcançamos execuções em ordem de milissegundos para as implementações em hardware, e centenas de milissegundos para implementação alto nível em software. Além disso, conseguimos custos de posicionamento em termos de dezenas. Sobretudo, devido ao gasto de 1% da área da FPGA por instância das sínteses de posicionamento e roteamento, podemos replicá-las. Assim, considerando 1000 execuções da unidade de posicionamento por benchmark, obtemos 60% de sucesso. Destes, foi possível rotear em média 40.4% e 15.7%, respectivamente para mesh e mesh-plus. Os custos em termos de distância e os tempos de execução são competitivos para ambos algoritmos. No entanto, o roteamento precisa ser melhorado para conseguir rotear porcentagem maior de grafos. Para isso, podemos desenvolver duas principais estratégias: buscar um meio melhor de estabelecer melhores rotas detectando pontos de congestionamentos, ou desenvolver uma solução que melhore o posicionamento de modo a facilitar o roteamento.
Palavras-chave FPGA, CGRA, aceleradores
Forma de apresentação..... Vídeo
Link para apresentação Vídeo
Gerado em 0,67 segundos.