Otimização de desempenho utilizando contadores de hardware

Detalhes bibliográficos
Ano de defesa: 2000
Autor(a) principal: Ricardo Varela Corrêa
Orientador(a): Celso Luiz Mendes
Banca de defesa: Stephan Stephany, João Ricardo de Freitas Oliveira, Alderico de Paula
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Instituto Nacional de Pesquisas Espaciais (INPE)
Programa de Pós-Graduação: Programa de Pós-Graduação do INPE em Computação Aplicada
Departamento: Não Informado pela instituição
País: BR
Resumo em Inglês: The availability of more powerful microcomputers with the computacional and storage capacities similar to expensive workstations, is leading the scientific community upfront to a new tool for the development of scientific applications. The use of these new plataforms created the need of an operational system that was stable and reliable, thus allowing Linux to lead the way to control these machines. Both high computer capacity and stable environment are items needed to boost the search for performance increase. Also, added to this scenario, there is an increasing complexity in scientific problems size of scientific data. With all this information in mind, performance increase is the next thing to do. Specifically Intel processors have built-in resources that can be used to analyze performance. The capture of the processor internal status in real time can provide information to solve software bottlenecks. Access to processor's internal resources to monitor events during execution of a code can be done using hardware counters, a set of registers that can monitor internal events occurring in the processor. Capture of performance data provides the necessary information on how an application interacts with the processor and, through the use of optimization procedures, it is possible to reduce the adverse interaction with the processor. An interface including a set of tools to capture performance data is available to the software programmer. The methods described here were applied to a series of simulations of adverse memory access and also to a real application. After its validation, a real scientific application written in Fortran 77 code was implemented and instrumented to monitor memory reference events in the processor internal cache. This application was totally restructured using Fortran 90 notations and again monitored for the same events. The reduction of execution time shows the efficiency of the Fortran 90 version. The reduction of adverse interaction with the cache memory is measured and discussed. This same application is again modified with the insertion of parallel directives in order to distribute the input data using the parallel data programming paradigm. The same events were monitored locally in each processor, showing the feasibility of performance data capture in parallel applications.
Link de acesso: http://urlib.net/sid.inpe.br/deise/2001/08.03.12.26
Resumo: A disponibilidade de microcomputadores cada vez mais potentes, com capacidade computacional e área de armazenamento próximos da capacidade de estações de trabalho caríssimas, tem colocado a comunidade científica diante de uma nova ferramenta para o desenvolvimento de aplicações científicas. A utilização dessas novas plataformas no meio científico criou a necessidade para um sistema operacional que fosse estável e confiável, abrindo o caminho para que o Linux assumisse a tarefa de gerenciar essas máquinas. Este aumento da capacidade somado a um ambiente estável, traz a necessidade de se melhorar o desempenho de algumas aplicações científicas, uma vez que o aumento das dimensões dos dados a analisar vem crescendo continuamente. Assim, com o aumento da complexidade dos problemas científicos e principalmente com a necessidade de tratamento de grandes quantidades de dados, tem colocado a otimização de desempenho como fator importante no desenvolvimento de uma aplicação. Especificamente nos processadores fabricados pela Intel, existem recursos internos que podem facilmente auxiliar no estudo do desempenho de um programa. A captura de dados internos que monitorem a atividade do código executando internamente ao processador e em tempo real, pode fornecer informações que mostrem onde estão os pontos problemáticos. O acesso a eventos internos aos processadores pode ser realizado através dos denominados contadores de hardware, que trazem informações precisas sobre o estado do processador. A forma de utilização desses contadores, principalmente como acioná-los a partir de uma aplicação de alto nível e estando trabalhando no ambiente Linux, exige alguns conhecimentos que estão discutidos com detalhes neste trabalho. A captura dos dados de desempenho permite assim conhecer como um trecho de programa interage com o processador e através de técnicas clássicas de otimização, pode-se reduzir consideravelmente os pontos de interação adversa com o processador. Uma interface foi desenvolvida para permitir ao programador a captura desses dados. A metodologia aqui descrita foi aplicada inicialmente a simulações de pequenos trechos de código e a uma aplicação sequencial. Posteriormente, foi aplicada a um exemplo de cálculo de desvio padrão onde contagens de diversos eventos foram realizadas. A otimização de um programa sequencial real partindo da reestruturação do código original em Fortran 77 foi executada com o código em notação Fortran 90, instrumentado e monitorado em diversos eventos. A paralelização desse código e execução em paralelo, mostra a eficiência do método, disponibilizando aos programadores uma sequência de etapas para análise de uma aplicação científica, visando a otimização de desempenho. A monitoração de programas paralelos permite assim que o desempenho de uma aplicação paralela seja analisada e através da inspeção e monitoração de seu código, mostrar como torná-lo mais eficiente. Os dados obtidos mostram que o método pode ser utilizado em aplicações sequenciais ou paralelas fornecendo informações claras do funcionamento de trechos de programa, permitindo ao programador identificar os pontos de interação adversa com a arquitetura.