Use este identificador para citar o ir al link de este elemento: http://hdl.handle.net/1843/ESBF-ALLNHB
Tipo: Dissertação de Mestrado
Título: Restrictification of function arguments
Autor(es): Victor Hugo Sperle Campos
primer Tutor: Fernando Magno Quintao Pereira
primer miembro del tribunal : Kecia Aline Marques Ferreira
Segundo miembro del tribunal: Sandro Rigo
Resumen: Aliasing 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%.
Abstract: Pointer 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%.
Asunto: Compiladores (Computadores)
Computação
Análise estática
Otimização de código (Compiladores)
Idioma: Inglês
Editor: Universidade Federal de Minas Gerais
Sigla da Institución: UFMG
Tipo de acceso: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-ALLNHB
Fecha del documento: 26-ago-2016
Aparece en las colecciones:Dissertações de Mestrado

archivos asociados a este elemento:
archivo Descripción TamañoFormato 
victorcampos.pdf2.66 MBAdobe PDFVisualizar/Abrir


Los elementos en el repositorio están protegidos por copyright, con todos los derechos reservados, salvo cuando es indicado lo contrario.