Geração de código para arquiteturas reconfiguráveis

dc.creatorPedro Henrique Moreira Caldeira
dc.date.accessioned2023-04-11T17:08:39Z
dc.date.accessioned2025-09-09T00:10:59Z
dc.date.available2023-04-11T17:08:39Z
dc.date.issued2019-03-11
dc.description.abstractRecent years have seen a surge in the popularity of Field-Programmable Gate Arrays (FPGAs). Programmers can use them to develop high-performance systems that are not only efficient in time, but also in energy. Yet, programming FPGAs remains a difficult task. Even though there exist today OpenCL interfaces to synthesize such hardware, higher-level programming languages, such as Java, C# or Python remain distant from them. In this work, we describe a compiler, and its supporting runtime environment, that reduces this distance, translating functional code written in Java to the Intel HARP platform. Thus, we bring two contributions. First, the insight that a functional-style library is a good starting point to bridge the gap between high-level programming idioms and FPGAs. Second, the implementation of this system itself, including the compiler, its intermediate representation, and all the runtime support necessary to shield developers from the task of transferring data back and forth between the host CPU and the accelerator. To demonstrate the effectiveness of our system, we have used it to implement different benchmarks, used in image processing and datamining. For large inputs, we can observe consistent 20x speedups over the Java Virtual Machine across all our benchmarks. Depending on the target function that we compile, this speedup can be as large as 280.
dc.description.sponsorshipCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superior
dc.identifier.urihttps://hdl.handle.net/1843/51804
dc.languagepor
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.rights.urihttp://creativecommons.org/licenses/by/3.0/pt/
dc.subjectComputação – Teses
dc.subjectArquitetura de computador – Teses
dc.subjectCompiladores (Programas de computador) – Teses
dc.subjectLinguagem de programação (Computadores) – Teses
dc.subject.otherCompiladores
dc.subject.otherFPGA
dc.subject.otherLinguages de Programação
dc.subject.otherArquitetura de Computadores
dc.subject.otherJava
dc.subject.otherMapReduce
dc.subject.otherPerformance
dc.titleGeração de código para arquiteturas reconfiguráveis
dc.title.alternativeCode generation to reconfigurable architectures
dc.typeDissertação de mestrado
local.contributor.advisor1Renato Antônio Celso Ferreira
local.contributor.advisor1Latteshttp://lattes.cnpq.br/3446817929796674
local.contributor.referee1Daniel Fernandes Macedo
local.contributor.referee1Ricardo dos Santos Ferreira
local.contributor.referee1Gilberto Medeiros Ribeiro
local.creator.Latteshttp://lattes.cnpq.br/9991514743471998
local.description.resumoNos últimos anos observa-se uma ascenção na popularidade das Matrizes de Portas Programáveis em Campo (Field Programmable Gate Array - FPGA). Programadores podem utilizá-las para desenvolver aplicações de alto desempenho que podem ser eficientes em tempo e energia. Porém, programar para FPGAs permanece uma tarefa difícil. Apesar de existirem interfaces OpenCL para sintetizar esse hardware, linguagens de alto nível como Java, C# ou Python permanecem distantes dessa arquitetura. Nesse trabalho descrevemos um compilador e um ambiente de execução que reduz essa distância traduzindo código funcional escrito em Java para a plataforma do Intel HARP. Portanto trazemos duas contribuições. Primeiro, mostramos que uma biblioteca de programação funcional é um bom ponto de partida para aproximar linguagens de alto nível e FPGAs. Segundo, a implementação de um arcabouço que inclui um compilador, uma representação intermediária e um ambiente de execução capaz de fazer a transferência de dados entre hospedeiro e acelerador sem intervenção explícita do programador. Afim de demonstrar a eficácia do nosso sistema, nós o utilizamos para implementar diferentes casos de testes utilizados em processamento de imagens e mineração de dados. Para entradas com grande volume de dados, observamos acelerações estáveis de 20x se comparando com o código original executado na Máquina Virtual Java entre todos nossos casos de teste. Dependendo da função que compilamos essa aceleração pode chegar a 280x.
local.publisher.countryBrasil
local.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
local.publisher.initialsUFMG
local.publisher.programPrograma de Pós-Graduação em Ciência da Computação

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
dissertacao_final.pdf
Tamanho:
4.25 MB
Formato:
Adobe Portable Document Format

Licença do pacote

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
license.txt
Tamanho:
2.07 KB
Formato:
Plain Text
Descrição: