Análise de perfis e visualização para identificação de gargalos de performance e tendências de escalabilidade de programas paralelos
ferramentas de perfilagem e visualização, otimização de código paralelo, desempenho escalável, computação de alto desempenho
Aproveitar o aumento do número de cores em super computadores para alcançar melhores níveis de escalabilidade em programas paralelos é um desafio. Os programas escaláveis possibilitam melhores desempenhos com maiores problemas ou em maiores sistemas computacionais. Neste sentido, diversas ferramentas para criação de perfis de código paralelo foram desenvolvidas para auxiliar os desenvolvedores na análise de dados referentes à execução de seus programas. Os dados analisados possibilitam que um processo de refatoração torne o código mais eficiente e com melhores níveis de desempenho. Entretanto, as ferramentas de perfilagem disponíveis estão voltadas para a análise de performance em um ambiente de execução específico, com número de cores e tamanho de problema fixos, o que torna ainda mais difícil escrever programas paralelos escalonáveis. A análise de execução em ambiente particular, mesmo detalhada, não permite direcionar a otimização do código para melhoria da tendência de escalabilidade do programa. A otimização de código com foco na escalabilidade requer a análise e comparação da execução do programa paralelo em diferentes ambientes de configuração. Neste sentido, este trabalho introduz a ferramenta Parallel Scalability Suite (PaScal Suite). Ele é composto de dois softwares independentes: o Analyzer e o Viewer. O PaScal Analyzer automatiza o processo de execução do código paralelo com diferentes números de cores e dados de entrada de uma forma mais simples e menos intrusiva do que os perfiladores convencionais. O PaScal Viewer interpreta os dados coletados pelo Analyzer e disponibiliza suporte visual para identificar tendências de escalabilidade paralela de todo o programa ou partes dele. Com estas caracterísitcas, o PaScal Suite apresenta uma maneira original e produtiva para identificar a tendência de escalabilidade de programas paralelos.