Análise de desempenho de programas paralelos Prof. Lucas M. Schnorr (UFRGS) Escola Regional de Alto Desempenho Alegrete, RS, Brasil Março 2014 Made with Org Mode 1/78 Apresentação do professor I I I Prof. Lucas M. Schnorr Doutorado em co-tutela UFRGS/INPG (2005 2009) Pesquisador CNRS na França (2009 2013) I I I I I I I Processamento Paralelo Sistemas Distribuídos Análise de Desempenho Visualização de Rastros Ferramentas: PajeNG, Viva, SimGrid, Akypuera, Poti, Tupi Professor de Compiladores e MLP Contato I I I UFRGS, Prédio 43425, Sala 202 http://www.inf.ufrgs.br/∼schnorr/ [email protected] 2/78 Funcionamento / Sondagem I Interrupções são bem-vindas Dúvidas, pergunte imediatamente I Experiência prévia? I 3/78 Introdução e motivação 4/78 Introdução I I Desenvolvimento de aplicações paralelas → Tarefa complexa Diculdade de se programar em paralelo I I Restrições na forma de se utilizar os recursos I I CPU versus GPU Indeterminismo da execução I I Linguagens de programação não apropriadas Comportamentos diferentes para a mesma entrada Escalabilidade dos supercomputadores 5/78 Escalabilidade: Xeon Phi Knights Corner 64 cores (256 threads) para obter 1 Teraop 6/78 Escalabilidade: Kalray MPAA 256 256 cores com NoC para obter 0.5 Teraop, baixo consumo 7/78 Escalabilidade: NVidia Tesla K40 2888 processadores para obter 4.29 TF in precisão simples 8/78 Escalabilidade: Tianhe-2 Supercomputer 3120000 (cpu e gpu) cores para obter 34 Petaops #1 na lista Top500 em novembro de 2013 9/78 Introdução Controlando a complexidade I Estratégias de controle da complexidade I I I Uso de interfaces de programação (MPI, OpenMP, CUDA) Bom conhecimento do sistema de execução Alto desempenho em uma aplicação paralela I I Ótimo mapeamento dos requisitos da aplicação nos recursos Vários ciclos de análise de desempenho 10/78 Introdução Melhorando o desempenho I Aplicação paralela/distribuída livre de erros de programação I Objetivo da análise de desempenho I I Vericar bom desempenho considerando o sistema Processo cíclico I I I Execuções experimentais Coleta e análise de dados da execução Modicação/reconguração da aplicação 11/78 Introdução Fases da análise de desempenho I Fase de coleta I I I Fase de análise dos dados I I Ocorre durante a execução da aplicação Registrar informações consideradas importantes Identicar problemas de desempenho e suas causas Na maioria das vezes, as fases são independentes I Não há consenso: alguns as realizam ao mesmo tempo 12/78 Introdução Análise de desempenho I Análise de desempenho é crucial I I I Durante o seu desenvolvimento Portabilidade da aplicação paralela/distribuída Objetivo do minicurso, dar uma visão geral de I I I I conceitos básicos, terminologia técnicas de coleta técnicas de análise algumas ferramentas 13/78 Roteiro Apresentação Introdução Conceitos básicos Técnicas de observação e registro Intervalo / Coee-break Técnicas para análise de desempenho Ferramentas e bibliotecas Conclusão e discussão 14/78 Conceitos básicos e terminologia 15/78 Visão geral dos conceitos básicos I Efeito de sonda Análise online oine Sincronização de relógios I Outros conceitos I I versus I I I I I I Casamento de eventos independentes Execução não-determinística (e replay) Obtenção de estado global Resolução de relógios Formato de arquivo Observabilidade 16/78 Efeito de Sonda I Comportamento natural I I Nenhum tipo de coleta de dados Ausência de atividades de análise I Efeito de sonda: tempo gasto no registro do comportamento I Manifesta-se sob diferentes formas I I I I I I Memória CPU Disco Tempo (ex: 3% mais lento) Quesitos na escolha de um sistema de coleta I I I I I Alteração do comportamento natural da aplicação Funcionalidades Facilidade de uso Recursos necessários (memória, processamento e disco) Efeito de sonda (intrusão) (Discussão sobre fases da análise de desempenho) 17/78 Caracterização da intrusão I Medir a amplitude do efeito de sonda I I Funcionamento I I I Medir o tempo de cada observação Granularidade na Uso principal da caracterização I I I Normalmente em tempo Corrigir o comportamento alterado registro pela observação Compensar com uma granularidade na os pontos de medição Objetivo: anular o efeito de sonda I Difícil de ser obtido, depende do ambiente de execução 18/78 Intrusão zero, possível? I Caracterização → Compensação: nem sempre funcionam I Simulação I I Tempo de simulação versus tempo de execução No registro do comportamento: tempo de simulação é parado 19/78 Análise online versus oine I Análise de desempenho: fases de coleta e de análise I Abordagem I I Coleta e análise simultâneas Abordagem I online oine Coleta e análise separadas 20/78 Análise online Coleta e análise simultâneas I Vantagens I I Ausência do custo de gerência dos dados → Evita escrita em disco Interatividade na análise I I I Desvantagens I Escalabilidade I I I Analista pode inuenciar os rumos da análise Exemplo Transferência dos dados Processamento necessário para análise (compete com a própria aplicação) → Efeito de sonda Abordagem pouco implementada em ferramentas 21/78 post-mortem) Análise oine ( Coleta e análise independentes I Desvantagens e vantagens opostas àquelas da análise I I I I Gerenciamento dos dados comportamentais Falta de interatividade Melhor escalabilidade online Técnicas de baixa intrusão relacionadas à escalabilidade I I Uso extensivo da memória durante a observação Uso de formato binário de dados 22/78 Aplicabilidade das abordagens I I I online e oine Qual é a melhor? Abordagem Abordagem online relacionada a depuração de erros post-mortem permite análise de desempenho 23/78 Sincronização de relógios I Sistemas distribuídos e paralelos I I I Cada máquina tem seu próprio relógio Na grande maioria das vezes, não há sincronia Principal problema (para a análise de desempenho) I Manter a causalidade entre os eventos 24/78 Técnicas de sincronização de relógios Por software e hardware I NTP ( I I I I I Capaz de obter sincronia na ordem de milisegundos Problema: sincronização insuciente PTP ( I Network Time Protocol) Precision Time Protocol) Sincroniza na ordem de microsegundos Em redes de baixa latência (supercomputadores) Sincronização de relógio por I I I hardware Relógios atômicos (fornecem hora precisa) Receptores GPS (Global Positioning System) Precisão na ordem de nanosegundos 25/78 Outros conceitos relacionados I Execução não-determinística I I Diculdade de estudar um problema de desempenho Reexecução determinística I I I Obtenção de estado global ( I I I I I I I Registra-se o comportamento em um primeiro momento Repete-se a execução obedecendo o comportamento inicial snapshot) Útil para vericar propriedades globais da aplicação Diculdades: latência da rede, Exemplo de incoerência Observabilidade (níveis de abstração) Casamento de informações independentes Resolução de relógios Formato de arquivo 26/78 Técnicas de observação e registro conceitual e prática 27/78 Visão geral das técnicas de observação / coleta I Técnicas de observação I I I I I Monitoramento Geração de índices estatísticos Denição de um perl de execução Observação comportamental Técnicas de coleta e registro I I I I Amostragem Cronometragem Contagem Rastreamento 28/78 Técnicas de observação (conceitual) I Métodos utilizados para observar o comportamento Internos externos I Observação interna I versus I I I I Fonte dos dados interna ao programa Sondas de observação Instrumentação Externa I I Fonte externa Somente o efeito é observado 29/78 Técnicas de observação I Monitoramento (observação externa) I I I I Aplicação paralela é inalterada Poucos detalhes Foco: sistemas computacionais, redes de interconexão Geração de índices estatísticos (interna) I I Tendências estatísticas através de métricas de desempenho Métricas I I I I Tempo de espera em regiões de código Tempo médio de execução de uma tarefa Útil para isolar uma parte do programa a ser melhorada (necessita de uma técnica de coleta de dados) 30/78 Técnicas de observação I Denição de um perl de execução (interna ou externa) I I I Estima o tempo gasto em partes do programa Função / método / módulo / região de código Indicador global → cautela em execuções de longa duração Observação comportamental (interna) I I I Indenticador preciso do comportamento Fornece informações detalhadas para a análise Desvantagens relacionadas ao efeito de sonda 31/78 Qual a melhor técnica de observação? I Depende I I I Exemplos I I I I Tipo de análise de desempenho Conhecimento do analista a respeito da aplicação Perl de execução → observação comportamental Monitoramento e índices estatísticos → perl de execução Observação comportamental Escolha deve ser feita caso a caso I Aplicação versus sistema paralelo 32/78 Técnicas de coleta e registro (prática) I Situação ideal I I I Registro preciso do comportamento Nível de intrusão próximo de zero Efeito de sonda passível de compensação I Difícil de se obter I Cada técnica de coleta traz um equilíbrio I precisão versus intrusão 33/78 Classicação das técnicas de coleta I De acordo como a maneira que o registro é lançado I Dirigida pelo tempo ou por eventos 34/78 Amostragem (guiada pelo tempo) I I Examinar periodicamente o estado do programa Intervalo de tempo → frequência da amostragem I I Denido pelo analista Funcionamento: no momento da medição I Sistema dispara uma ordem de observação I I I Recongura para que a medição ocorra novamente Uso bastante comum → Gerar um perl de execução I I Verica qual o estado do programa, registra em memória Exemplo: frequência de 20 microsegundos, função em execução Perl indica somente quantas vezes a função foi executada I Resultados são em porcentagem da quantidade de amostras 35/78 Amostragem I Qualidade dos resultados I I Exemplo: 100 nanosegundos I I versus 1 segundo Funções em geral se executam na ordem de microsegundos Efeito de sonda causado pelo amostragem I I Inversamente proporcional ao tamanho do intervalo Diretamente proporcional à frequência de amostragem Achar um bom equilíbrio entre qualidade e intrusão I Caracterizar intrusão versus frequência da amostragem Complexidade no uso em uma aplicação paralela I I Vários processos e computadores Múltiplos pers de execução 36/78 Cronometragem (guiada por evento) I I Medir o tempo passado em uma região de código Instrumentação manual ou automática do código do programa I I Funcionamento I I I I Inserir instruções extras responsáveis pela cronometragem No local de início da medição, disparo do cronômetro No local do m da medição, tempo é contabilizado Medições são somadas e associadas à região observada Gera um perl de execução I Comparação com a amostragem 37/78 Cronometragem I Intrusão I I I Diretamente relacionada a quantidade de cronômetros Mais controlável quando comparada a amostragem Exemplo e contra-exemplo I Cronometrar a região dentro de um laço Vantagens e desvantagens I I Flexível (analista dene os cronômetros) Manual e eventualmente complexa Complexidade no uso em uma aplicação paralela I I Vários processos e computadores Múltiplos pers de execução 38/78 Contagem (guiado por evento) I Medir a quantidade de ocorrências de um evento I I I Funcionamento I I I I Execução de uma função Uso de um recurso Quando um evento é gerado Procura-se o contador correspondente em memória Incrementa o contador Maior vantagem I I Baixa intrusão (incremento de um contador para cada evento) Uso em programas de longa duração com eventos frequentes 39/78 Contagem I Implementação multi-nível I I I Contadores em I I Em I I I Contadores em software e hardware Combinação entre eles software Flexibilidade, adaptação, portabilidade hardware Imutabilidade, intrusão próxima de zero Esforço de padronização (PAPI) Exemplos I I Quantidade de faltas no acesso a memória cache Quantas instruções foram executadas Complexidade no uso em uma aplicação paralela 40/78 Rastreamento (guiada por evento) I Registrar dados signicativos na forma de eventos datados Objetivo de análise: reconstrução do comportamento original I Funcionamento I I I I Quando um ponto de geração de evento é atingido Um evento é criado e registrado em um arquivo de rastro Reconstrução do comportamento original I Precisão, coerência e qualidade versus intrusão 41/78 Rastreamento o que é um evento? I I Ocorrência de comportamento especíco durante a execução Contém I I I I Um tipo Uma data Informações adicionadas de acordo com o seu tipo Exemplos I I I I Início da execução de uma função Acesso ao um recurso de memória Envio de uma mensagem Liberação de um lock (mutex) Discussão: abrangência do rastreamento I Abordagem mais genérica que as outras 42/78 Formas de rastreamento hardware, software e híbrido I Por I I I I Por I I I Equipamentos especializados Falta de exibilidade Baixa intrusão software Dentro da aplicação ou em bibliotecas associadas Instruções extras embutidas Híbrido I I I I hardware Procura-se obter um bom equilíbrio entre os dois Eventos frequentes são registrados em hardware Menos frequentes e conguráveis em software Maioria das ferramentas → rastreamento por software Complexidade no uso em uma aplicação paralela 43/78 Qual a melhor técnica de coleta e registro? Amostragem, cronometragem, contagem, rastreamento? I I Depende do nível de conhecimento que se pretende obter Exemplos I I I I I Panorama geral (sem alterar código) → perl por amostragem Histograma temporal → perl por cronometragem I Registrando o comportamento das funções suspeitas I Mesclando informações do nível da aplicação Enriquecer com contadores de hardware do processador Rastreamento investiga problemas de comunicação Escolha deve ser feita caso a caso I I Aplicação versus sistema paralelo Suposição do analista e conhecimento prévio 44/78 Intervalo Coee-break 45/78 Técnicas para análise de desempenho 46/78 Técnicas para análise de desempenho I Lembrando as fases de análise I I I Inúmeras técnicas para a análise do comportamento I I Coleta / registro de comportamento Interpretação / análise do comportamento Inspiradas e inuenciadas pela forma da coleta Exemplos I I Análise através de índices estatísticos Construção de uma representação visual dos dados Variabilidade de técnicas de análise I I Visão global de desempenho Análise local de desempenho 47/78 Objetivos da análise de desempenho I Melhorar o desempenho da aplicação paralela I I I Tempo de execução Aceleração Eciência I Aumentar a eciência de utilização de recursos I Outros objetivos? 48/78 Visão geral das técnicas de análise de desempenho I I I I Análise Análise Análise Análise de pers de execução automática por transformação de dados interativa por visualização de rastros 49/78 Análise de pers de execução I I Forma mais simples de ter uma ideia do desempenho Funcionamento I I Amostragem / cronometragem Criação de um histograma I I I Histograma global I I versus local Aplicação inteira / processos individuais Lembrete: perl condizente com a realidade I I Quantidade de vezes detectada (amostragem) Tempo de execução (cronometragem) Discussão sobre a frequência de coleta Histograma baseado em dados de rastreamento 50/78 Análise automática I Supercomputadores compostos de milhares de processadores I I Aplicações cada vez maiores Rastreamento e a grande quantidade de dados gerados I Ondes3D: propagação de ondas sísmicas em 3D I I LU.A.32: Solver Lower-upper gauss-seidel I I 32p, 4.79s, cerca de 7 milhões de eventos (142 Mbytes) Simulador de partículas: BSP, implementação quadrática I I 32p, execução de 50s , 100K eventos 32p, 6.26s, cerca de 200 milhões de eventos (2.5 Gbytes) Análise manual e interativa se torna difícil 51/78 Análise automática I I Detectar problemas de desempenho automaticamente Funcionamento através de um programa de computador I Utiliza como entrada o registro de comportamento amostragem / cronometragem / contagem / rastros I I I Rastreamento é mais utilizada devido ao nível de detalhamento Investiga problemas de desempenho (data mining) Apresenta os problemas identicados ao analista Escalabilidade I I Uma quantidade maior de dados penaliza menos a análise Mineração de dados pode ser paralelizada e distribuída 52/78 Análise automática padrões de desempenho ruim I I Problemas de desempenho devem ser previamente conhecidos Um padrão de desempenho ruim deve conter I I I I Quantidade de processos envolvidos Qual o comportamento de cada processo (estados e variáveis) Estado das comunicações entre os processos Desvantagens I I Limitada aos padrões conhecidos Necessidade de se conhecer a semântica dos dados 53/78 Análise por transformações de dados I Transformar os dados comportamentais coletados I Razões para a transformação I I I Alterar a natureza das métricas comportamentais I I Reduzir o volume dos dados originais Necessidade de criação de (novas) métricas de desempenho Colocar em evidência características relevantes da aplicação Exemplo I Aplicação de larga escala I I Muitos processos com comportamento semelhante Agrupar comportamento semelhantes 54/78 Análise por transformações de dados I Melhor aplicada em dados oriundos do rastreamento I I I Mais detalhes, estado da aplicação, do sistema Maiores possibilidades de transformação Duas abordagens I Agregação I Agrupamento (clustering) I Operadores de agregação para redução dos dados I Agrupar o comportamento por semelhança 55/78 Análise por transformação de dados agregação I Utilização de operadores de agregação I I Objetivo I I I Agregar o comportamento de um conjunto de processos Obter um valor que representa o comportamento do conjunto Dados de amostragem / cronometragem I I Média, Max, Min, Soma, Subtração, . . . Feita diretamente sobre os pers de execução obtidos Dados de rastreamento I I I Integração temporal sobre variáveis e métricas de um processo Integração espacial sobre vários processos da aplicação Ambas 56/78 Análise por transformação de dados agrupamento I Procura por comportamentos similares I I Escolhe-se um processo representativo I I Minimizando as diferenças entre ele o os outros do grupo Amostragem / cronometragem I I Utilizando uma ou mais métricas disponíveis Pers semelhantes de execução Rastreamento I I Comportamento semelhante ao longo do tempo Reduz a complexidade da análise 57/78 Análise por transformação de dados I Vantagens (sumário) I I Reduz a complexidade, o volume dos dados Permite denir uma nova visão sobre o comportamento Desvantagens I Agregação I I Suavização demasiada do comportamento heterogêneo Agrupamento I Processo representativo muito diferente da média do grupo 58/78 Análise por visualização de rastros I Criar uma representação visual dos dados comportamentais I Interatividade I Se apoia sobre a experiência do analista I Exemplo de visualização espaço/tempo 59/78 Análise por visualização de rastros categorias I Técnicas de visualização comportamental I I I I Espaço / tempo (grácos de Gantt) Eixo vertical, eixo horizontal Eventual organização hierárquica no espaço Pontos fortes I I I Técnicas estruturais I I I Evidenciam a estrutura da aplicação ou do sistema Correlacionam o comportamento da aplicação Independentes da linha do tempo I I Ênfase na causalidade entre eventos Análise de desempenho de grão no Valores instantâneos ou agregados temporalmente Técnicas estatísticas I I Grácos estatísticos de dispersão Duas ou mais variáveis correlacionadas 60/78 Análise de visualização de rastros Exemplo de técnica estrutural Hosts Clusters Sites Grid 61/78 Análise de visualização de rastros I Vantagens (sumário) I I I I Representação visual Interatividade Experiência do analista Desvantagens I I Escalabilidade (análise manual, limitação técnica) Necessidade de combinar com outras técnicas I Transformação de dados / análise automática 62/78 Qual a melhor técnica de análise? Pers, automática, transformação, visualização? I I Depende do tipo do problema de desempenho Técnicas de análise são complementares I I Pers → Visualização de rastros Combinação diversa de técnicas I Global versus local 63/78 Ferramentas e bibliotecas apresentação não exaustiva 64/78 Visão geral de ferramentas e bibliotecas I Coleta e registro I I I I I I Score-P TAU EZTrace Akypuera SimGrid Análise I I I I I Vampir Scalasca Vite PajéNG Viva 65/78 Score-P I Scalable Performance Measurement Infrastructure for Parallel Codes I I I Desenvolvido por I I I I Focado em aplicações paralelas MPI http://www.score-p.org/ German BMBF project SILC US DOE project PRIMA Consórcio de laboratórios europeus e americanos Implementa várias técnicas de coleta I I Rastreamento (com o formato OTF2) Geração de pers de execução (com o formato CUBE3) 66/78 TAU I Tuning and Analysis Utilities I I I Desenvolvido por I I Universidade do Oregon (Estados Unidos) Implementa I I I Suporta várias linguagens (Fortran, C, C++, Java, Python) http://www.cs.uoregon.edu/research/tau/ Rastreamento (formato próprio) Amostragem Colaboração com o projeto Score-P 67/78 EZTrace I EZTrace easy to use trace generator I I I I Desenvolvido na França Implementa rastreamento I I I Focado em aplicações MPI e OpenMP http://eztrace.gforge.inria.fr/ Exporta rastros em Pajé e OTF Extensível (novos tipos de eventos) Interceptação dinâmica 68/78 Akypuera I Akypuera (rastro em guarani) I I I I Desenvolvido em Porto Alegre, foco em aplicações MPI https://github.com/schnorr/akypuera librastro Utiliza a (formato binário conciso) Conversores de TAU, OTF, OTF2 para Pajé 69/78 SimGrid I SimGrid Versatile Simulation of Distributed Systems I I I Desenvolvido na França http://simgrid.gforge.inria.fr/ Módulo de rastreamento 70/78 Vampir I Ferramenta comercial oriunda de laboratório de pesquisa I I I I TU-Dresden, Germany http://vampir.eu/ Visualização de rastros, pers de execução, agrupamento Altamente escalável com distribuição 71/78 Scalasca I Scalasca I I I Análise automática, pers de execução I I I Forschungszentrum Jülich (Alemanha) http://www.scalasca.org/ Algoritmos de mineração de dados Uma centena de padrões de desempenho ruim Formato CUBE4 (gerado por Score-P) 72/78 Vite I Vite I I I Desenvolvido pelo INRIA Bordeaux http://vite.gforge.inria.fr/ Visualização de rastros I Formato Pajé e OTF 73/78 PajéNG I PajéNG I I I I Visualização comportamental de rastros I I Desenvolvido em Porto Alegre https://github.com/schnorr/pajeng Reimplementação em C++ do Pajé original (http://paje.sf.net) pajeng, pj_dump Utiliza exclusivamente o formato Pajé I Exporta para formato CSV 74/78 Viva I Viva I I I Visualização estrutural, agregação espaço-temporal I I I Desenvolvido em Porto Alegre https://github.com/schnorr/viva Topologia da rede (posicionamento dinâmico) Treemaps Simbiose com rastros gerados pelo SimGrid B Hierarchy: Site (10) - Cluster(10) - Machine (10) - Processor (100) C Hierarchy: Site (10) - Cluster(10) - Machine (10) - Processor (100) D Hierarchy: Site (10) - Cluster(10) - Machine (10) - Processor (100) E Maximum Aggregation 75/78 Conclusão e discussão 76/78 Conclusão I I Desenvolvimento de aplicações paralelas de alto desempenho → Tarefa complexa Análise de desempenho I Etapa crucial no desempenho de aplicações de alto desempenho I I Portabilidade Processo cíclico I Execução e coleta, seguidas por análise 77/78 Discussão I I Como utilizar estes conceitos na prática? Diculdades possíveis? 78/78