
Sobre a Tecnologia
Otimização automática do código C para aceleradores de hardware baseados em FPGA.
O CHARD efetua uma reestruturação automática, transformando o código C em DGF e aplicando otimizações para gerar código C com diretivas para HLS - focadas em aceleradores de hardware baseados em FPGA.
Contactos de Licenciamento

Daniel Marques Vasconcelos
Problema
Programar FPGAs para aceleração por hardware é uma tarefa complexa e demorada, que exige competências e ferramentas específicas, diferentes das habitualmente utilizadas no desenvolvimento de software.
Além disso, embora as ferramentas atuais de High-Level Synthesis (HLS) permitam aos programadores usar linguagens semelhantes ao C para programar FPGAs, continuam a requerer conhecimentos de hardware, bem como transformações manuais de código e diretivas, para gerar implementações de hardware eficientes.
Isto tem impacto na produtividade, no desempenho e na eficiência energética dos sistemas baseados em FPGA, especialmente em aplicações que envolvem computações intensivas em dados e paralelismo, como o processamento de imagem, aprendizagem automática (machine learning) e algoritmos de processamento digital de sinal (DSP).
Solução
A nossa solução é o CHARD, um software que reestrutura automaticamente código, transformando código C num grafo de fluxo de dados (Dataflow Graph – DFG) e aplicando otimizações ao grafo para gerar código C com diretivas de High-Level Synthesis (HLS), destinado a aceleradores por hardware baseados em FPGA.
Esta tecnologia tem como objetivo permitir que os programadores de software possam programar FPGAs de forma mais simples e eficiente, sem necessidade de conhecimentos aprofundados de design de hardware ou de ferramentas HLS.
A tecnologia baseia-se num frontend flexível, capaz de lidar com diferentes linguagens de entrada, e num backend que implementa várias transformações e otimizações no grafo, como folding, unfolding, pipelining, otimizações aritméticas, particionamento de arrays e reutilização de dados.
O CHARD está implementado num framework que consegue gerar automaticamente código C otimizado para HLS, a partir de execution traces das funções críticas de entrada, alcançando acelerações de 30 a 100 vezes (em comparação com o código C original não modificado) e entre 2 a 15 vezes mais rápido (em comparação com código C otimizado com diretivas do Vivado HLS).
Benefícios
Versatilidade
Suporta diferentes linguagens de programação de entrada
Fácil de usar
Instruções mais simples do que as ferramentas HLS, eliminando a necessidade de conhecimentos aprofundados em HLS
Robustez
Preparado para reestruturação de código altamente complexa e imune a transformações específicas não incluídas
Desempenho
Geração automática de código C otimizado com acelerações significativas
Casos de Uso
Hardware de Síntese de Alto Nível (HLS) para FPGAs
Detalhes da Tecnologia
Direitos Comerciais
Estado
Área
Eletrónica e Fotónica
Ciência de Computadores
Setores
Publicações Científicas
Graph-Based Code Restructuring Targeting HLS for FPGAs
Applied reconfigurable computing

