Estratégias para exploração de sequências de transformações do compilador
Ano de defesa: | 2017 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | , , |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Estadual de Maringá
Campo Mourao |
Programa de Pós-Graduação: |
Programa de Pós-Graduação em Ciência da Computação
|
Departamento: |
Departamento de Informática
|
País: |
Brasil
|
Palavras-chave em Português: | |
Área do conhecimento CNPq: | |
Link de acesso: | http://repositorio.utfpr.edu.br/jspui/handle/1/2440 |
Resumo: | Os compiladores têm por função traduzir um programa em uma linguagem fonte para uma linguagem alvo, geralmente uma linguagem de máquina. Nessa tradução, encontrar a melhor correspondência entre as linguagens é um problema complexo, pelo tamanho do espaço de busca. Por tal complexidade, uma etapa de transformação de código é necessária, na qual algoritmos de transformação modificam o código tentando melhorá-lo sem alterar seu significado. O Problema de Seleção de Transformações (PST) consiste na busca das melhores transformações para um código de entrada, tal que o código final obtenha um bom desempenho. O estado-da-arte não possui estratégias que possibilitem soluções para o PST aplicáveis a usuários finais, pois o tempo de resposta é alto para tal aplicação. O objetivo deste trabalho é formular técnicas para encontrar efetivas sequências de transformações a serem aplicadas a um código de entrada, de forma a aumentar seu desempenho reduzindo o tempo de execução. Além disso, objetiva-se reduzir o tempo de resposta de forma que a solução para o PST se aproxime da utilização por usuários finais. Inicialmente, se explora a Variable Neighborhood Search (VNS) para solucionar o PST, compilando iterativamente cada código de entrada. A aplicação da VNS alcançou resultados até 15,72% melhores do que outra estratégia iterativa, conseguindo melhoria em todos os programas avaliados em relação ao melhor nível de transformação. Contudo, a compilação iterativa possui alto tempo de resposta. Assim, é necessário explorar técnicas de aprendizagem de máquina, que podem prover bons resultados baseadas em experiências anteriores do compilador. Dessa forma, esta dissertação explora diferentes caracterizações de programas para representar o conhecimento acumulado na aplicação de transformações, para então aplicar a um sistema de geração de código com Raciocínio Baseado em Casos (RBC), que escolhe determinada sequência para um programa de entrada. A representação do conhecimento é capaz de atingir 81% de proximidade do melhor resultado possível para os programas avaliados, enquanto o sistema RBC gera resultados 13,74% melhores do que o nível -O3, em um tempo de resposta 99% inferior ao de estratégias de compilação iterativa. A melhoria nas formas de recuperação de experiências anteriores conseguiu superar em 20,23% o desempenho obtido por outra estratégia comparada com um número de avaliações próximo. |