Paralelismo e Localidade de Dados




A otimização de paralelismo é um assunto que vem sendo pesquisado a muito tempo. Estas pesquisas têm se concentrado na aplicação de transformações de programas baseado nas restrições de dependências de dados. Para tal, foi desenvolvida um complexo fundamento teórico para os compiladores paralelizadores. Esta teoria teve tanto sucesso que vem sendo aplicada em outras áreas, como por exemplo, para sistemas de tempo real, análise de "false sharing" em máquinas paralelas, consistência de memória em sistemas distribuídos e otimização de acessos a dados.

Com relação a localidade de dados, este assunto vem merecendo esforços de diversos centros devido ao problema da latência de memória existente nos modernos computadores. Assim, servindo-se do suporte fornecido pelos compiladores paralelizadores, novos sistemas vem sendo implantados com o desenvolvimento de novas transformações e métodos de análise.

Os grandes problemas existentes atualmente na área de otimização de programas recaem em duas grandes áreas: primeiro, a determinação da melhor seqüência de transformações em um dado programa. Um passo na solução deste problema são as transformações unimodulares [BANE94]. Fundamentado na teoria das matrizes unimodulares, o objetivo das transformações unimodulares é fornecer uma base consistente para a análise da aplicação de combinações de loop interchange, loop reversal e loop skewing.

A segunda área se refere à quantificação da localidade de dados: De modo a determinarmos seguramente o ganho obtido pela aplicação de uma transformação visando otimizar a localidade, precisamos de uma métrica que quantifique o padrão de acessos a dados de um programa. Uma das métricas mais simples é o vetor distância de dependência. Infelizmente, ele não é conveniente pois descreve apenas o número de elementos que devem ser reaproveitados, sem determiná-los propriamente. Neste sentido, as janelas de referência [EISE90] suprem largamente este requisito, fornecendo não somente o número de elementos a serem reutilizados como também os elementos propriamente ditos. Nos ítens a seguir passamos a descrever com algum detalhe estes dois tópicos que são fundamentais para a compreensão do sistema que vem sendo desenvolvido.





Pedro Vaz Artigas
E-mail: artigas@lsi.usp.br

LSI Laboratory of Integrated Systems