next up previous
Next: Plano de Trabalho Up: Proposta de Projeto: Instrumentação Previous: Justificativa

Objetivos

 

A premissa básica do presente projeto é de que não se deva impor ao programador nenhum outro grau de especialização além daquele necessário para o uso das ferramentas atuais (HPF, MPI, etc.). Assim, o objetivo principal deste projeto é o de criar mecanismos que forneçam ao programador dados concretos sobre o desempenho de sua aplicação ao ser executada num determinado sistema, bem como indicações sobre possíveis problemas e formas de solucioná-los, ou ao menos minimizá-los. A partir destas informações, seria possível ao programador alterar trechos de seu programa original, ou utilizar diferentes subrotinas de uma certa biblioteca padrão, de modo a otimizar o desempenho de sua aplicação.

A materialização destes mecanismos se dará através da construção de um sistema para observação de desempenho, portável para diferentes plataformas, conforme será descrito mais adiante. Este sistema será composto, basicamente, por uma biblioteca de instrumentação de programas, contendo funções destinadas a extrair, em tempo de execução, dados sobre o desempenho da aplicação. Numa versão preliminar, este sistema de observação de desempenho seria baseado em software, causando, porém, um mínimo de interferência sobre o programa em estudo. Desta forma, seria possível utilizá-lo em vários sistemas, inclusive uniprocessados.

No caso de vários dos processadores atuais, o hardware existente para monitoração de desempenho está accessível ao usuário, e é esta nova potencialidade que se pretende explorar neste projeto. Assim, nos casos dos sistemas onde houver a disponibilidade desse hardware extra, o sistema de observação de desempenho irá operar de forma híbrida, combinando dados obtidos diretamente do hardware com outras informações colhidas via software.

Um dos desafios que este projeto se propõe a estudar é como apresentar ao usuário, de maneira uniforme, os diferentes tipos de informações fornecidas pelos componentes de fabricantes distintos. Pretende-se identificar as características comuns entre os vários sistemas existentes, e criar, com isto, um subconjunto de características genéricas, universais entre os vários sistemas, e que possam ser facilmente associadas a construções básicas do programa original, tais como contagem de operações aritméticas, contagem de acessos à memória, etc..

Finalmente, planeja-se que este sistema possa ser facilmente integrado a outras ferramentas já existentes, tanto de programação, como de análise de desempenho. Em particular, espera-se que um compilador externo seja capaz de invocar chamadas a rotinas deste sistema, de modo a gerar código instrumentado, como subproduto do processo de compilação. Todos os dados de desempenho a serem gerados estarão em formatos compatíveis com outros sistemas de análise e otimização de desempenho disponíveis atualmente, conforme será detalhado em §gif.

Resumidamente, pretende-se atingir os seguintes objetivos:


next up previous
Next: Plano de Trabalho Up: Proposta de Projeto: Instrumentação Previous: Justificativa

Celso Luiz Mendes LAC-ES
Wed Feb 18 09:48:20 EST 1998