Restrictification of function arguments

dc.creatorVictor Hugo Sperle Campos
dc.date.accessioned2019-08-11T17:08:27Z
dc.date.accessioned2025-09-09T01:02:05Z
dc.date.available2019-08-11T17:08:27Z
dc.date.issued2016-08-26
dc.description.abstractPointer aliasing still hinders compiler optimizations, despite years of research on pointer disambiguation. Several programming languages offer to coders mechanisms to distinguish memory references, such as the 'restrict' keyword in C. However, the use of such mechanisms is prone to human mistakes. This work presents a suite of automatic techniques that mitigate this problem: three different ways to disambiguate pointers passed as arguments of functions. These techniques combine static analyses to infer symbolic bounds of memory regions and code versioning. Functions whose pointers are distinct can be aggressively optimized whereas they wouldn't otherwise. An implementation of the restrictification methods in the LLVM compiler shows that we can vectorize up to 63% more operations than what could be accomplished using the highest optimization level of said compiler. When applying the optimization on OpenCV benchmarks, a widely used library, we have observed speedups as great as 40%.
dc.identifier.urihttps://hdl.handle.net/1843/ESBF-ALLNHB
dc.languageInglês
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectCompiladores (Computadores)
dc.subjectComputação
dc.subjectAnálise estática
dc.subjectOtimização de código (Compiladores)
dc.subject.otherClonagem de funções
dc.subject.otherCompiladores
dc.subject.otherAliasing
dc.subject.otherOtimização de código
dc.subject.otherAnálise estática
dc.titleRestrictification of function arguments
dc.typeDissertação de mestrado
local.contributor.advisor1Fernando Magno Quintao Pereira
local.contributor.referee1Kecia Aline Marques Ferreira
local.contributor.referee1Sandro Rigo
local.description.resumoAliasing de ponteiros ainda prejudica as otimizações de compiladores apesar de anos de pesquisa em desambiguação de ponteiros. Por causa da dificuldade em realizar a desambiguação, diversas linguagens de programação oferecem aos programadores mecanismos para distinguir referências à memória, como a palavra-chave restrict nalinguagem C. Entretanto, o uso de tais mecanismos é sujeito a erros humanos. Nesta dissertação, apresentamos um conjunto de técnicas automáticas para mitigar o problema. Nós desenvolvemos e testamos três diferentes formas de desambiguar ponteiros passadoscomo argumentos de funções. Nossas técnicas combinam análises estáticas para inferir limites simbólicos de regiões de memória e versionamento de código. Geramos um clone para cada função cujos argumentos podem ser desambiguados e o otimizamosassumindo que os parâmetros formais da função não são alias. Em tempo de execução, usamos os resultados de comparações simbólicas para decidir qual versão da função será executada: a original, não otimizada, ou o clone restritificado. A implementação dos nossos métodos, feita sobre o LLVM, mostra que podemos vetorizar até 63% mais operações do que o nível mais alto de otimização do compilador, -O3. A aplicação da técnica sobre uma biblioteca de uso bastante difundido, a OpenCV, resultou em melhorias no tempo de execução de até 40%.
local.publisher.initialsUFMG

Arquivos

Pacote original

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