Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/ESBF-9KKQFY
Type: Dissertação de Mestrado
Title: Otimizações de código sensíveis a contexto baseadas em clonagem de funções
Authors: Matheus Silva Vilela
First Advisor: Fernando Magno Quintao Pereira
First Referee: Edson Borin
Second Referee: Mariza Andrade da Silva Bigonha
Third Referee: Roberto da Silva Bigonha
Abstract: Compiladores fazem uso de duas técnicas principais para implementar otimizações dependentes do contexto de chamadas de funções:integração e clonagem. Historica- mente, a integração de funções tem tido um uso mais amplo, já que, na prática, tende a ser mais efetiva. Apesar disso, a clonagem de funções provê benefícios não presentes na integração. Em particular, a clonagem dá ao desenvolvedor uma maneira de mitigar bugs de desempenho, já que sua aplicação gera código reusável. Além disso, ela lida com recursão de uma forma mais natural. Finalmente, a clonagem pode levar a uma menor expansão de código.Neste trabalho, revisamos a clonagem de funções sob a luz desses benefícios. Discutimos algumas técnicas de especialização de código independentes baseadas em clonagem que, apesar de simples, são amplamente aplicáveis, mesmo em benchmarks altamente otimizados, como o SPEC CPU 2006. Nossas otimizações são de fácil im- plementação e aplicação. Utilizamos a conhecida heurística de pro ling estático de Wu e Larus para medir o ganho de desempenho de um clone. Essa métrica nos dá uma maneira concreta de indicar, aos desenvolvedores de código, bugs de desempenho potenciais, além de nos fornecer uma métrica para decidirmos se devemos manter ou não um clone. Ao implementarmos nossas ideias no compilador LLVM, fomos capazes de obter ganhos de desempenho signi cantes nos benchmarks do SPEC, mesmo que aplicados sobre o nível de otimização -O2.
Abstract: Compilers rely on two main techniques to implement optimizations that depend on the calling context of functions: inlining and cloning. Historically, function inlining has seen more widespread use, as it tends to be more e ective in practice. Yet, function cloning provides bene ts that inline leaves behind. In particular, cloning gives the program developer a way to ght performance bugs, because it generates reusable code. Furthermore, it deals with recursion more naturally. Finally, it might lead to less code expansion, the inlining's nemesis.In this work, we revisit function cloning under the light of these bene ts. We discuss some independent code specialization techniques based on function cloning, which, although simple, nd wide applicability, even in highly optimized benchmarks, such as SPEC CPU 2006. We claim that our optimizations are easy to implement and deploy. We use Wu and Larus's well-known static pro ling heuristic to measure the pro tability of a clone. This metric gives us a concrete way to point out to program developers potential performance bugs, and gives us a metric to decide whether we keep a clone. By implementing our ideas in LLVM, we have been able to achieve signi cant speed up on the SPEC benchmarks on top of the -O2 optimization level..
Subject: Compiladores (Computadores)
Computação
Arquitetura de computador
Clonagem de código
language: Inglês
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
Rights: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-9KKQFY
Issue Date: 21-Feb-2014
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
matheus_silva_vilela.pdf6.11 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.