Ferramenta de compilação para a geração de código para um runtime de offloading automático

Detalhes bibliográficos
Autor(a) principal: Rosário, Luan Bodner do
Data de Publicação: 2019
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
Texto Completo: http://repositorio.utfpr.edu.br/jspui/handle/1/6013
Resumo: Computação Heterogênea é uma área da Computação que desperta grande interesse tanto no setor comercial quanto no acadêmico. Essa área engloba o conhecimento sobre nós computacionais compostos por dispositivos aceleradores(GPUs) e processadores multicore. Apesar de populares, poucas aplicações são capazes de utilizar todo o poder computacional disponibilizado por essas plataformas heterogêneas. Diante desse cenário, um ambiente de execução havia sido desenvolvido para tentar solucionar este problema. Este ambiente toma como entrada funções com versões destinadas à CPU e à GPU e é capaz de controlar a execução das threads OpenMP coletando contadores de desempenho dentro do processador. Com essas informações a decisão de offloading de código é tomada em tempo de execução. Neste projeto foi desenvolvida uma ferramenta de compilação com o propósito de trabalhar em conjunto com este ambiente de execução, sendo capaz de detectar regiões demarcadas do código como paralelizáveis, partindo de um código que inicialmente seria executado sequencialmente. Após a detecção, a ferramenta gera versões do código que pode ser executado tanto em CPU multicore usando chamadas de funções OpenMP quanto em GPUs por meio da plataforma de processamento paralelo Compute Unified Device Architecture (CUDA). Para comprovar as funcionalidades desta ferramenta, foram produzidos um conjunto de provas de conceito que mostram passo à passo o funcionamento do compilador, as transformações feitas durante o processo e a saída produzida pelo ambiente de execução com o propósito de mostrar a viabilidade de um sistema capaz de transformar código legado e explorar a arquitetura heterogênea de destino com poucas modificações no código original.
id UTFPR-12_e580787db831c1fae16d5d565a40f874
oai_identifier_str oai:repositorio.utfpr.edu.br:1/6013
network_acronym_str UTFPR-12
network_name_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
repository_id_str
spelling 2020-11-09T19:10:18Z2020-11-09T19:10:18Z2019-06-27ROSÁRIO, Luan Bodner do. Ferramenta de compilação para a geração de código para um runtime de offloading automático. 2019. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2019.http://repositorio.utfpr.edu.br/jspui/handle/1/6013Computação Heterogênea é uma área da Computação que desperta grande interesse tanto no setor comercial quanto no acadêmico. Essa área engloba o conhecimento sobre nós computacionais compostos por dispositivos aceleradores(GPUs) e processadores multicore. Apesar de populares, poucas aplicações são capazes de utilizar todo o poder computacional disponibilizado por essas plataformas heterogêneas. Diante desse cenário, um ambiente de execução havia sido desenvolvido para tentar solucionar este problema. Este ambiente toma como entrada funções com versões destinadas à CPU e à GPU e é capaz de controlar a execução das threads OpenMP coletando contadores de desempenho dentro do processador. Com essas informações a decisão de offloading de código é tomada em tempo de execução. Neste projeto foi desenvolvida uma ferramenta de compilação com o propósito de trabalhar em conjunto com este ambiente de execução, sendo capaz de detectar regiões demarcadas do código como paralelizáveis, partindo de um código que inicialmente seria executado sequencialmente. Após a detecção, a ferramenta gera versões do código que pode ser executado tanto em CPU multicore usando chamadas de funções OpenMP quanto em GPUs por meio da plataforma de processamento paralelo Compute Unified Device Architecture (CUDA). Para comprovar as funcionalidades desta ferramenta, foram produzidos um conjunto de provas de conceito que mostram passo à passo o funcionamento do compilador, as transformações feitas durante o processo e a saída produzida pelo ambiente de execução com o propósito de mostrar a viabilidade de um sistema capaz de transformar código legado e explorar a arquitetura heterogênea de destino com poucas modificações no código original.Heterogeneous computing is an area in computer science that has become of great interest both comercially and academically. This area encompasses our understanding of computer nodes formed by both accelerating devices, such as GPUs and multi core processors. Although popular, very few applications are able to use all of the computing power available in these heterogeneous platforms. With these questions in mind, an execution enviroment was developed to solve this problem. This enviroment takes as input blocks of code (functions) with two different versions: one version destined to the GPU and another version destined to the CPU. This enviroment is capable of controlling the threads in the CPU and use them to collect data to decide which device is best suited for a specific function inside of the application. In this project, we attempted to develop a compiler tool with the purpose of working with this execution enviroment. The tool is able to detect if a demarcated region of code is parallel, starting from a code originally sequencial. After that, the tool generates code for both CPU by means of function calls to the OpenMP library and GPU by means of CUDA. To show that the compiler tool is functional, we produced a set of conceptual proofs that show the step-by-step of the tool by explaining what happened during the compilation process, the transformations made during each step and finally the output generated by the enviroment, proving that the system created and developed here is viable for improving the efficiency of code with very little changes in the original source code.porUniversidade Tecnológica Federal do ParanáCampo MouraoCiência da ComputaçãoUTFPRBrasilDepartamento Acadêmico de ComputaçãoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOCompiladores (Computadores)Computação de alto desempenhoProgramação paralela (Computação)Compiling (Electronic computers)High performance computingParallel programming (Computer science)Ferramenta de compilação para a geração de código para um runtime de offloading automáticoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisCampo MourãoGonçalves, Rogério AparecidoGonçalves, Diego BertoliniGonçalves, Paulo CesarGonçalves, Rogério AparecidoRosário, Luan Bodner doinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))instname:Universidade Tecnológica Federal do Paraná (UTFPR)instacron:UTFPRORIGINALferramentacompilacaoruntimeoffloading.pdfapplication/pdf3890577http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/1/ferramentacompilacaoruntimeoffloading.pdf9dd88d9fde2799d7f5b5eb599d32d1beMD51LICENSElicense.txttext/plain1290http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/2/license.txtb9d82215ab23456fa2d8b49c5df1b95bMD52TEXTferramentacompilacaoruntimeoffloading.pdf.txtExtracted texttext/plain131314http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/3/ferramentacompilacaoruntimeoffloading.pdf.txt967174ae75e3ca4170ad55615520c074MD53THUMBNAILferramentacompilacaoruntimeoffloading.pdf.jpgGenerated Thumbnailimage/jpeg1333http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/4/ferramentacompilacaoruntimeoffloading.pdf.jpg449efa05f9789c882a55fedd41d95b91MD541/60132020-11-09 17:10:18.945oai:repositorio.utfpr.edu.br:1/6013TmEgcXVhbGlkYWRlIGRlIHRpdHVsYXIgZG9zIGRpcmVpdG9zIGRlIGF1dG9yIGRhIHB1YmxpY2HDp8OjbywgYXV0b3Jpem8gYSBVVEZQUiBhIHZlaWN1bGFyLCAKYXRyYXbDqXMgZG8gUG9ydGFsIGRlIEluZm9ybWHDp8OjbyBlbSBBY2Vzc28gQWJlcnRvIChQSUFBKSBlIGRvcyBDYXTDoWxvZ29zIGRhcyBCaWJsaW90ZWNhcyAKZGVzdGEgSW5zdGl0dWnDp8Ojbywgc2VtIHJlc3NhcmNpbWVudG8gZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBkZSBhY29yZG8gY29tIGEgTGVpIG5vIDkuNjEwLzk4LCAKbyB0ZXh0byBkZXN0YSBvYnJhLCBvYnNlcnZhbmRvIGFzIGNvbmRpw6fDtWVzIGRlIGRpc3BvbmliaWxpemHDp8OjbyByZWdpc3RyYWRhcyBubyBpdGVtIDQgZG8gCuKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgVHJhYmFsaG9zIGRlIENvbmNsdXPDo28gZGUgQ3Vyc28gZGUgR3JhZHVhw6fDo28gZSAKRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgZGUgSW5mb3JtYcOnw6NvIGUgbm9zIENhdMOhbG9nb3MgRWxldHLDtG5pY29zIGRvIApTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdLCBwYXJhIGZpbnMgZGUgbGVpdHVyYSwgaW1wcmVzc8OjbyBlL291IGRvd25sb2FkLCB2aXNhbmRvIGEgCmRpdnVsZ2HDp8OjbyBkYSBwcm9kdcOnw6NvIGNpZW50w61maWNhIGJyYXNpbGVpcmEuCgogIEFzIHZpYXMgb3JpZ2luYWlzIGUgYXNzaW5hZGFzIHBlbG8ocykgYXV0b3IoZXMpIGRvIOKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgClRyYWJhbGhvcyBkZSBDb25jbHVzw6NvIGRlIEN1cnNvIGRlIEdyYWR1YcOnw6NvIGUgRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgCmRlIEluZm9ybWHDp8OjbyBlIG5vcyBDYXTDoWxvZ29zIEVsZXRyw7RuaWNvcyBkbyBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdIGUgZGEg4oCcRGVjbGFyYcOnw6NvIApkZSBBdXRvcmlh4oCdIGVuY29udHJhbS1zZSBhcnF1aXZhZGFzIG5hIEJpYmxpb3RlY2EgZG8gQ8OibXB1cyBubyBxdWFsIG8gdHJhYmFsaG8gZm9pIGRlZmVuZGlkby4gCk5vIGNhc28gZGUgcHVibGljYcOnw7VlcyBkZSBhdXRvcmlhIGNvbGV0aXZhIGUgbXVsdGljw6JtcHVzLCBvcyBkb2N1bWVudG9zIGZpY2Fyw6NvIHNvYiBndWFyZGEgZGEgCkJpYmxpb3RlY2EgY29tIGEgcXVhbCBvIOKAnHByaW1laXJvIGF1dG9y4oCdIHBvc3N1YSB2w61uY3Vsby4KRepositório de PublicaçõesPUBhttp://repositorio.utfpr.edu.br:8080/oai/requestopendoar:2020-11-09T19:10:18Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)false
dc.title.pt_BR.fl_str_mv Ferramenta de compilação para a geração de código para um runtime de offloading automático
title Ferramenta de compilação para a geração de código para um runtime de offloading automático
spellingShingle Ferramenta de compilação para a geração de código para um runtime de offloading automático
Rosário, Luan Bodner do
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Compiladores (Computadores)
Computação de alto desempenho
Programação paralela (Computação)
Compiling (Electronic computers)
High performance computing
Parallel programming (Computer science)
title_short Ferramenta de compilação para a geração de código para um runtime de offloading automático
title_full Ferramenta de compilação para a geração de código para um runtime de offloading automático
title_fullStr Ferramenta de compilação para a geração de código para um runtime de offloading automático
title_full_unstemmed Ferramenta de compilação para a geração de código para um runtime de offloading automático
title_sort Ferramenta de compilação para a geração de código para um runtime de offloading automático
author Rosário, Luan Bodner do
author_facet Rosário, Luan Bodner do
author_role author
dc.contributor.advisor1.fl_str_mv Gonçalves, Rogério Aparecido
dc.contributor.referee1.fl_str_mv Gonçalves, Diego Bertolini
dc.contributor.referee2.fl_str_mv Gonçalves, Paulo Cesar
dc.contributor.referee3.fl_str_mv Gonçalves, Rogério Aparecido
dc.contributor.author.fl_str_mv Rosário, Luan Bodner do
contributor_str_mv Gonçalves, Rogério Aparecido
Gonçalves, Diego Bertolini
Gonçalves, Paulo Cesar
Gonçalves, Rogério Aparecido
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Compiladores (Computadores)
Computação de alto desempenho
Programação paralela (Computação)
Compiling (Electronic computers)
High performance computing
Parallel programming (Computer science)
dc.subject.por.fl_str_mv Compiladores (Computadores)
Computação de alto desempenho
Programação paralela (Computação)
Compiling (Electronic computers)
High performance computing
Parallel programming (Computer science)
description Computação Heterogênea é uma área da Computação que desperta grande interesse tanto no setor comercial quanto no acadêmico. Essa área engloba o conhecimento sobre nós computacionais compostos por dispositivos aceleradores(GPUs) e processadores multicore. Apesar de populares, poucas aplicações são capazes de utilizar todo o poder computacional disponibilizado por essas plataformas heterogêneas. Diante desse cenário, um ambiente de execução havia sido desenvolvido para tentar solucionar este problema. Este ambiente toma como entrada funções com versões destinadas à CPU e à GPU e é capaz de controlar a execução das threads OpenMP coletando contadores de desempenho dentro do processador. Com essas informações a decisão de offloading de código é tomada em tempo de execução. Neste projeto foi desenvolvida uma ferramenta de compilação com o propósito de trabalhar em conjunto com este ambiente de execução, sendo capaz de detectar regiões demarcadas do código como paralelizáveis, partindo de um código que inicialmente seria executado sequencialmente. Após a detecção, a ferramenta gera versões do código que pode ser executado tanto em CPU multicore usando chamadas de funções OpenMP quanto em GPUs por meio da plataforma de processamento paralelo Compute Unified Device Architecture (CUDA). Para comprovar as funcionalidades desta ferramenta, foram produzidos um conjunto de provas de conceito que mostram passo à passo o funcionamento do compilador, as transformações feitas durante o processo e a saída produzida pelo ambiente de execução com o propósito de mostrar a viabilidade de um sistema capaz de transformar código legado e explorar a arquitetura heterogênea de destino com poucas modificações no código original.
publishDate 2019
dc.date.issued.fl_str_mv 2019-06-27
dc.date.accessioned.fl_str_mv 2020-11-09T19:10:18Z
dc.date.available.fl_str_mv 2020-11-09T19:10:18Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv ROSÁRIO, Luan Bodner do. Ferramenta de compilação para a geração de código para um runtime de offloading automático. 2019. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2019.
dc.identifier.uri.fl_str_mv http://repositorio.utfpr.edu.br/jspui/handle/1/6013
identifier_str_mv ROSÁRIO, Luan Bodner do. Ferramenta de compilação para a geração de código para um runtime de offloading automático. 2019. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2019.
url http://repositorio.utfpr.edu.br/jspui/handle/1/6013
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
dc.publisher.program.fl_str_mv Ciência da Computação
dc.publisher.initials.fl_str_mv UTFPR
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Departamento Acadêmico de Computação
publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
dc.source.none.fl_str_mv reponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
instname:Universidade Tecnológica Federal do Paraná (UTFPR)
instacron:UTFPR
instname_str Universidade Tecnológica Federal do Paraná (UTFPR)
instacron_str UTFPR
institution UTFPR
reponame_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
collection Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
bitstream.url.fl_str_mv http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/1/ferramentacompilacaoruntimeoffloading.pdf
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/2/license.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/3/ferramentacompilacaoruntimeoffloading.pdf.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/6013/4/ferramentacompilacaoruntimeoffloading.pdf.jpg
bitstream.checksum.fl_str_mv 9dd88d9fde2799d7f5b5eb599d32d1be
b9d82215ab23456fa2d8b49c5df1b95b
967174ae75e3ca4170ad55615520c074
449efa05f9789c882a55fedd41d95b91
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)
repository.mail.fl_str_mv
_version_ 1805923094775201792