Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/ESBF-ALLNHB
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Fernando Magno Quintao Pereirapt_BR
dc.contributor.referee1Kecia Aline Marques Ferreirapt_BR
dc.contributor.referee2Sandro Rigopt_BR
dc.creatorVictor Hugo Sperle Campospt_BR
dc.date.accessioned2019-08-11T17:08:27Z-
dc.date.available2019-08-11T17:08:27Z-
dc.date.issued2016-08-26pt_BR
dc.identifier.urihttp://hdl.handle.net/1843/ESBF-ALLNHB-
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%.pt_BR
dc.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%.pt_BR
dc.languageInglêspt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.initialsUFMGpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectClonagem de funçõespt_BR
dc.subjectCompiladorespt_BR
dc.subjectAliasingpt_BR
dc.subjectOtimização de códigopt_BR
dc.subjectAnálise estáticapt_BR
dc.subject.otherCompiladores (Computadores)pt_BR
dc.subject.otherComputaçãopt_BR
dc.subject.otherAnálise estáticapt_BR
dc.subject.otherOtimização de código (Compiladores)pt_BR
dc.titleRestrictification of function argumentspt_BR
dc.typeDissertação de Mestradopt_BR
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
victorcampos.pdf2.66 MBAdobe PDFView/Open


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