UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
INSTITUTO DE INFORMÁTICA
PROGRAMA DE POS-GRADUAÇÃO EM COMPUTAÇÃO
———————————————————
DEFESA DE DISSERTAÇÃO DE MESTRADO
Aluno: Cristian Fernando Flores Castañeda
Orientador: Prof. Dr. Nicolas Maillard
Titulo: Otimização Unroll and Jam através da refatoração
Linha de Pesquisa: Processamento Paralelo e Distribuído
Data: 02/09/2011
Hora: 14h30
Local: Auditório Prof. José Mauro Volkmer de Castilho
Banca Examinadora:
Prof. Dr. Philippe Olivier Alexandre Navaux (UFRGS)
Prof. Dr. Gerson Geraldo Homrich Cavalheiro (UFPEL)
Prof. Dr. Jairo Panetta (INPE/CPTEC)
Presidente da Banca: Prof. Dr. Nicolas Maillard
Resumo: As otimizações de um programa podem ser efetuadas no código intermediário gerado na fase de compilação, ou através da Performance Refactoring que consiste na inserção de otimizações diretamente no código fonte da aplicação.
Na estrutura do código fonte, os laços de iteração possuem um importante impacto no desempenho da aplicação, pois consomem elevados tempos de execução, sendo assim, é fundamental que estes sejam alvo de otimizações. Uma das otimizações de laço é o Unroll and Jam, que aplica operações de reestruturação de laços aninhados, permitindo utilizar eficientemente a hierarquia de memória. Os passos desta otimização consistem em primeiramente desenrolar os laços a serem otimizados, e posteriormente fusioná-los formando um bloco único de instrução.
Neste trabalho se propôs usar refatoração de código para automatizar o Unroll and Jam de laços em nível do código fonte, o que possibilita acumular os efeitos da otimização no programa original com as melhorias tradicionais propiciadas pelo compilador na fase de otimização do código intermediário. A implementação foi realizada com base nas estruturas da ferramenta Photran, que consiste em um ambiente de desenvolvimento integrado para a linguagem Fortran 77-2008.
Os resultados de desempenho obtidos demonstraram que a utilização de Unroll and Jam através da Performance Refactoring, com diferentes níveis de otimização, obteve ganhos significativos de desempenho em comparação a otimização realizada pelo compilador da Intel. Deve-se destacar que a aplicação conjunta de ambas as técnicas de otimização, originou resultados melhores que a utilização de uma técnica somente. Como trabalhos
futuros, é interessante que novas pesquisas possam ser realizadas na obtenção de índices de desenrolamento ótimos e na aplicação conjunta de outras abordagens de otimização. Também pode haver estudos que permitam que outras otimizações sejam aplicadas pela Performance Refactoring.
Palavras-Chave: Otimização, Unroll and Jam, Refatoração, Fortran.