Dynamic dispatch of context-sensitive optimizations

Detalhes bibliográficos
Autor(a) principal: Gabriel Poesia Reis e Silva
Data de Publicação: 2017
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFMG
Texto Completo: http://hdl.handle.net/1843/JCES-AVKLSP
Resumo: Construir análises sensíveis ao contexto escaláveis é um problema que vem sendo frequentemente trabalhadopela comunidade de compiladores, com sucesso. Porém, a implementação de otimizações sensíveis ao contextocontinua sendo desafiadora. O principal problema que desencoraja os compiladores de implementarem taisotimizações é o crescimento no tamanho do código. Com clonagem de funções ou inlining, duas técnicas conhecidaspara a implementação de especializações sensíveis ao contexto, o tamanho do código pode crescer exponencialmenteno pior caso. Ambas as técnicas são baseadas em criar cópias especializadas do código para cada contexto.Contudo, as duas técnicas precisam criar cópias de todas as funções no caminho de chamadas que leva a cadaotimização, ainda que isto envolva copiar funções que não serão otimizadas. Neste trabalho, propomos uma soluçãopara este problema. Utilizando uma combinação de despacho dinâmico e uma máquina de estados para controlar as transiçõesentre os contextos dinamicamente, nosso método implementa otimizações completamente sensíveis ao contextonecessitando apenas copiar as funções que serão otimizadas, mas não o caminho de chamadas até elas.Apresentamos nossa abordagem em Minilog, uma linguagem mínima que possui todos os recursos necessários para aplicaro método proposto, e provamos sua corretude. Implementamos nosso método na infraestrutura de compiladores LLVM,utilizando-o para otimizar programas com propagação de constantes completamente sensível a contexto.Nossos experimentos nos benchmarks do LLVM Test Suite e do SPEC CPU2006 mostram que nosso método escala significativamentemelhor em termos de espaço que clonagem de funções, gerando binários em média 2.7x menores, adicionando em média 8.5x menosbytes ao implementar a mesma otimização. Os binários gerados utilizando nossa técnica tiveram performance muito semelhante aosgerados com clonagem tradicional.Além disso, utilizando essa classe de otimizações ainda pouco explorada, conseguimos speed-ups de até 20\% em algunsbenchmarks quando comparados a LLVM -O3.
id UFMG_c83010840ec96adac248cb6c8453217a
oai_identifier_str oai:repositorio.ufmg.br:1843/JCES-AVKLSP
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Fernando Magno Quintao PereiraEdson BorinMario Sergio Ferreira Alvim JuniorGabriel Poesia Reis e Silva2019-08-13T22:30:16Z2019-08-13T22:30:16Z2017-08-04http://hdl.handle.net/1843/JCES-AVKLSPConstruir análises sensíveis ao contexto escaláveis é um problema que vem sendo frequentemente trabalhadopela comunidade de compiladores, com sucesso. Porém, a implementação de otimizações sensíveis ao contextocontinua sendo desafiadora. O principal problema que desencoraja os compiladores de implementarem taisotimizações é o crescimento no tamanho do código. Com clonagem de funções ou inlining, duas técnicas conhecidaspara a implementação de especializações sensíveis ao contexto, o tamanho do código pode crescer exponencialmenteno pior caso. Ambas as técnicas são baseadas em criar cópias especializadas do código para cada contexto.Contudo, as duas técnicas precisam criar cópias de todas as funções no caminho de chamadas que leva a cadaotimização, ainda que isto envolva copiar funções que não serão otimizadas. Neste trabalho, propomos uma soluçãopara este problema. Utilizando uma combinação de despacho dinâmico e uma máquina de estados para controlar as transiçõesentre os contextos dinamicamente, nosso método implementa otimizações completamente sensíveis ao contextonecessitando apenas copiar as funções que serão otimizadas, mas não o caminho de chamadas até elas.Apresentamos nossa abordagem em Minilog, uma linguagem mínima que possui todos os recursos necessários para aplicaro método proposto, e provamos sua corretude. Implementamos nosso método na infraestrutura de compiladores LLVM,utilizando-o para otimizar programas com propagação de constantes completamente sensível a contexto.Nossos experimentos nos benchmarks do LLVM Test Suite e do SPEC CPU2006 mostram que nosso método escala significativamentemelhor em termos de espaço que clonagem de funções, gerando binários em média 2.7x menores, adicionando em média 8.5x menosbytes ao implementar a mesma otimização. Os binários gerados utilizando nossa técnica tiveram performance muito semelhante aosgerados com clonagem tradicional.Além disso, utilizando essa classe de otimizações ainda pouco explorada, conseguimos speed-ups de até 20\% em algunsbenchmarks quando comparados a LLVM -O3.The compilers community has dedicated much time and effort in making context-sensitive analyses scalable, with great profit. However, the implementation of context-sensitive optimizations remains a challenge. The main problem is code size growth. Both function cloning and inlining are based on creating copies of all functions in the call path that leads to each optimization, even when that involves copying functions that are not optimized. We propose a solution for that problem. Using a combination of dynamic dispatch and a state machine to dynamically control the transitions between calling contexts, our method implements fully context-sensitive optimizations only needing to copy optimized functions. Experiments in the LLVM Test Suite and SPEC CPU2006 show our method scales better than cloning, using 8.5x less bytes to implement the same optimizations. We have also observed speed-ups of up to 20% on top of LLVM -O3 using fully context-sensitive constant propagation.Universidade Federal de Minas GeraisUFMGLinguagem de programação (Computadores)Otimização combinatóriaCompiladores (Computadores)ComputaçãoCompiladores OtimizantesLinguagens de ProgramaçãoPropagação de ConstantesOtimizações Sensíveis ao ContextoDynamic dispatch of context-sensitive optimizationsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGORIGINALgabrielpoesiareisesilva.pdfapplication/pdf1292521https://repositorio.ufmg.br/bitstream/1843/JCES-AVKLSP/1/gabrielpoesiareisesilva.pdf4b4d25d8d1c1009b4dfdf0568aa34f0bMD51TEXTgabrielpoesiareisesilva.pdf.txtgabrielpoesiareisesilva.pdf.txtExtracted texttext/plain158019https://repositorio.ufmg.br/bitstream/1843/JCES-AVKLSP/2/gabrielpoesiareisesilva.pdf.txt30eee45260c59b530c6cdf7db1a181fdMD521843/JCES-AVKLSP2019-11-14 12:07:03.611oai:repositorio.ufmg.br:1843/JCES-AVKLSPRepositório de PublicaçõesPUBhttps://repositorio.ufmg.br/oaiopendoar:2019-11-14T15:07:03Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.pt_BR.fl_str_mv Dynamic dispatch of context-sensitive optimizations
title Dynamic dispatch of context-sensitive optimizations
spellingShingle Dynamic dispatch of context-sensitive optimizations
Gabriel Poesia Reis e Silva
Compiladores Otimizantes
Linguagens de Programação
Propagação de Constantes
Otimizações Sensíveis ao Contexto
Linguagem de programação (Computadores)
Otimização combinatória
Compiladores (Computadores)
Computação
title_short Dynamic dispatch of context-sensitive optimizations
title_full Dynamic dispatch of context-sensitive optimizations
title_fullStr Dynamic dispatch of context-sensitive optimizations
title_full_unstemmed Dynamic dispatch of context-sensitive optimizations
title_sort Dynamic dispatch of context-sensitive optimizations
author Gabriel Poesia Reis e Silva
author_facet Gabriel Poesia Reis e Silva
author_role author
dc.contributor.advisor1.fl_str_mv Fernando Magno Quintao Pereira
dc.contributor.referee1.fl_str_mv Edson Borin
dc.contributor.referee2.fl_str_mv Mario Sergio Ferreira Alvim Junior
dc.contributor.author.fl_str_mv Gabriel Poesia Reis e Silva
contributor_str_mv Fernando Magno Quintao Pereira
Edson Borin
Mario Sergio Ferreira Alvim Junior
dc.subject.por.fl_str_mv Compiladores Otimizantes
Linguagens de Programação
Propagação de Constantes
Otimizações Sensíveis ao Contexto
topic Compiladores Otimizantes
Linguagens de Programação
Propagação de Constantes
Otimizações Sensíveis ao Contexto
Linguagem de programação (Computadores)
Otimização combinatória
Compiladores (Computadores)
Computação
dc.subject.other.pt_BR.fl_str_mv Linguagem de programação (Computadores)
Otimização combinatória
Compiladores (Computadores)
Computação
description Construir análises sensíveis ao contexto escaláveis é um problema que vem sendo frequentemente trabalhadopela comunidade de compiladores, com sucesso. Porém, a implementação de otimizações sensíveis ao contextocontinua sendo desafiadora. O principal problema que desencoraja os compiladores de implementarem taisotimizações é o crescimento no tamanho do código. Com clonagem de funções ou inlining, duas técnicas conhecidaspara a implementação de especializações sensíveis ao contexto, o tamanho do código pode crescer exponencialmenteno pior caso. Ambas as técnicas são baseadas em criar cópias especializadas do código para cada contexto.Contudo, as duas técnicas precisam criar cópias de todas as funções no caminho de chamadas que leva a cadaotimização, ainda que isto envolva copiar funções que não serão otimizadas. Neste trabalho, propomos uma soluçãopara este problema. Utilizando uma combinação de despacho dinâmico e uma máquina de estados para controlar as transiçõesentre os contextos dinamicamente, nosso método implementa otimizações completamente sensíveis ao contextonecessitando apenas copiar as funções que serão otimizadas, mas não o caminho de chamadas até elas.Apresentamos nossa abordagem em Minilog, uma linguagem mínima que possui todos os recursos necessários para aplicaro método proposto, e provamos sua corretude. Implementamos nosso método na infraestrutura de compiladores LLVM,utilizando-o para otimizar programas com propagação de constantes completamente sensível a contexto.Nossos experimentos nos benchmarks do LLVM Test Suite e do SPEC CPU2006 mostram que nosso método escala significativamentemelhor em termos de espaço que clonagem de funções, gerando binários em média 2.7x menores, adicionando em média 8.5x menosbytes ao implementar a mesma otimização. Os binários gerados utilizando nossa técnica tiveram performance muito semelhante aosgerados com clonagem tradicional.Além disso, utilizando essa classe de otimizações ainda pouco explorada, conseguimos speed-ups de até 20\% em algunsbenchmarks quando comparados a LLVM -O3.
publishDate 2017
dc.date.issued.fl_str_mv 2017-08-04
dc.date.accessioned.fl_str_mv 2019-08-13T22:30:16Z
dc.date.available.fl_str_mv 2019-08-13T22:30:16Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1843/JCES-AVKLSP
url http://hdl.handle.net/1843/JCES-AVKLSP
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 Federal de Minas Gerais
dc.publisher.initials.fl_str_mv UFMG
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
bitstream.url.fl_str_mv https://repositorio.ufmg.br/bitstream/1843/JCES-AVKLSP/1/gabrielpoesiareisesilva.pdf
https://repositorio.ufmg.br/bitstream/1843/JCES-AVKLSP/2/gabrielpoesiareisesilva.pdf.txt
bitstream.checksum.fl_str_mv 4b4d25d8d1c1009b4dfdf0568aa34f0b
30eee45260c59b530c6cdf7db1a181fd
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv
_version_ 1803589265381130240