Use este identificador para citar ou linkar para este item:
http://hdl.handle.net/1843/ESBF-9KKQFY
Tipo: | Dissertação de Mestrado |
Título: | Otimizações de código sensíveis a contexto baseadas em clonagem de funções |
Autor(es): | Matheus Silva Vilela |
Primeiro Orientador: | Fernando Magno Quintao Pereira |
Primeiro membro da banca : | Edson Borin |
Segundo membro da banca: | Mariza Andrade da Silva Bigonha |
Terceiro membro da banca: | Roberto da Silva Bigonha |
Resumo: | 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.. |
Assunto: | Compiladores (Computadores) Computação Arquitetura de computador Clonagem de código |
Idioma: | Inglês |
Editor: | Universidade Federal de Minas Gerais |
Sigla da Instituição: | UFMG |
Tipo de Acesso: | Acesso Aberto |
URI: | http://hdl.handle.net/1843/ESBF-9KKQFY |
Data do documento: | 21-Fev-2014 |
Aparece nas coleções: | Dissertações de Mestrado |
Arquivos associados a este item:
Arquivo | Descrição | Tamanho | Formato | |
---|---|---|---|---|
matheus_silva_vilela.pdf | 6.11 MB | Adobe PDF | Visualizar/Abrir |
Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.