Análise de desempenho de programas paralelos

Post on 07-Jan-2017

220 views 2 download

Transcript of Análise de desempenho de programas paralelos

Análise de desempenho de programas paralelos

Prof. Lucas M. Schnorr (UFRGS)

Escola Regional de Alto DesempenhoAlegrete, RS, Brasil

Março 2014

Made with Org Mode

1/78

Apresentação do professor

I Prof. Lucas M. Schnorr

I Doutorado em co-tutela UFRGS/INPG (2005 � 2009)

I Pesquisador CNRS na França (2009 � 2013)I Processamento ParaleloI Sistemas DistribuídosI Análise de DesempenhoI Visualização de Rastros

I Ferramentas: PajeNG, Viva, SimGrid, Akypuera, Poti, Tupi

I Professor de Compiladores e MLP

I ContatoI UFRGS, Prédio 43425, Sala 202I http://www.inf.ufrgs.br/∼schnorr/I schnorr@inf.ufrgs.br

2/78

Funcionamento / Sondagem

I Interrupções são bem-vindas

I Dúvidas, pergunte imediatamente

I Experiência prévia?

3/78

Introduçãoe motivação

4/78

Introdução

I Desenvolvimento de aplicações paralelas→ Tarefa complexa

I Di�culdade de se programar em paraleloI Linguagens de programação não apropriadas

I Restrições na forma de se utilizar os recursosI CPU versus GPU

I Indeterminismo da execuçãoI Comportamentos diferentes para a mesma entrada

I Escalabilidade dos supercomputadores

5/78

Escalabilidade: Xeon Phi �Knights Corner�64 cores (256 threads) para obter 1 Tera�op

6/78

Escalabilidade: Kalray MPAA 256256 cores com NoC para obter 0.5 Tera�op, baixo consumo

7/78

Escalabilidade: NVidia Tesla K402888 processadores para obter 4.29 TF in precisão simples

8/78

Escalabilidade: Tianhe-2 Supercomputer3120000 (cpu e gpu) cores para obter 34 Peta�ops

#1 na lista Top500 em novembro de 2013

9/78

Introdução � Controlando a complexidade

I Estratégias de controle da complexidadeI Uso de interfaces de programação (MPI, OpenMP, CUDA)I Bom conhecimento do sistema de execução

I Alto desempenho em uma aplicação paralelaI Ótimo mapeamento dos requisitos da aplicação nos recursosI 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 desempenhoI Veri�car bom desempenho considerando o sistema

I Processo cíclicoI Execuções experimentaisI Coleta e análise de dados da execuçãoI Modi�cação/recon�guração da aplicação

11/78

Introdução � Fases da análise de desempenho

I Fase de coletaI Ocorre durante a execução da aplicaçãoI Registrar informações consideradas importantes

I Fase de análise dos dadosI Identi�car problemas de desempenho e suas causas

I Na maioria das vezes, as fases são independentesI Não há consenso: alguns as realizam ao mesmo tempo

12/78

Introdução � Análise de desempenho

I Análise de desempenho é crucialI Durante o seu desenvolvimentoI Portabilidade da aplicação paralela/distribuída

I Objetivo do minicurso, dar uma visão geral deI conceitos básicos, terminologiaI técnicas de coletaI técnicas de análiseI algumas ferramentas

13/78

Roteiro

Apresentação

Introdução

Conceitos básicos

Técnicas de observação e registro

Intervalo / Co�ee-break

Técnicas para análise de desempenho

Ferramentas e bibliotecas

Conclusão e discussão

14/78

Conceitos básicose terminologia

15/78

Visão geral dos conceitos básicos

I Efeito de sonda

I Análise online versus o�ine

I Sincronização de relógios

I Outros conceitosI Casamento de eventos independentesI Execução não-determinística (e replay)I Obtenção de estado globalI Resolução de relógiosI Formato de arquivoI Observabilidade

16/78

Efeito de SondaI Comportamento natural

I Nenhum tipo de coleta de dadosI Ausência de atividades de análise

I Efeito de sonda: tempo gasto no registro do comportamentoI Alteração do comportamento natural da aplicação

I Manifesta-se sob diferentes formasI MemóriaI CPUI DiscoI Tempo (ex: 3% mais lento)

I Quesitos na escolha de um sistema de coletaI FuncionalidadesI Facilidade de usoI Recursos necessários (memória, processamento e disco)I Efeito de sonda (intrusão)

I (Discussão sobre fases da análise de desempenho)

17/78

Caracterização da intrusão

I Medir a amplitude do efeito de sondaI Normalmente em tempo

I FuncionamentoI Medir o tempo de cada observaçãoI Granularidade �na

I Uso principal da caracterizaçãoI Corrigir o comportamento alterado registro pela observaçãoI Compensar com uma granularidade �na os pontos de medição

I Objetivo: anular o efeito de sondaI 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çãoI Tempo de simulação versus tempo de execuçãoI No registro do comportamento: tempo de simulação é parado

19/78

Análise online versus o�ine

I Análise de desempenho: fases de coleta e de análise

I Abordagem onlineI Coleta e análise simultâneas

I Abordagem o�ineI Coleta e análise separadas

20/78

Análise onlineColeta e análise simultâneas

I VantagensI Ausência do custo de gerência dos dados→ Evita escrita em disco

I Interatividade na análiseI Analista pode in�uenciar os rumos da análiseI Exemplo

I DesvantagensI Escalabilidade

I Transferência dos dadosI Processamento necessário para análise

(compete com a própria aplicação) → Efeito de sonda

I Abordagem pouco implementada em ferramentas

21/78

Análise o�ine (post-mortem)Coleta e análise independentes

I Desvantagens e vantagens opostas àquelas da análise onlineI Gerenciamento dos dados comportamentaisI Falta de interatividadeI Melhor escalabilidade

I Técnicas de baixa intrusão relacionadas à escalabilidadeI Uso extensivo da memória durante a observaçãoI Uso de formato binário de dados

22/78

Aplicabilidade das abordagens online e o�ine

I Qual é a melhor?

I Abordagem online relacionada a depuração de erros

I Abordagem post-mortem permite análise de desempenho

23/78

Sincronização de relógios

I Sistemas distribuídos e paralelosI Cada máquina tem seu próprio relógioI Na grande maioria das vezes, não há sincronia

I Principal problema (para a análise de desempenho)I Manter a causalidade entre os eventos

24/78

Técnicas de sincronização de relógiosPor software e hardware

I NTP (Network Time Protocol)I Capaz de obter sincronia na ordem de milisegundosI Problema: sincronização insu�ciente

I PTP (Precision Time Protocol)I Sincroniza na ordem de microsegundosI Em redes de baixa latência (supercomputadores)

I Sincronização de relógio por hardwareI Relógios atômicos (fornecem hora precisa)I Receptores GPS (Global Positioning System)I Precisão na ordem de nanosegundos

25/78

Outros conceitos relacionados

I Execução não-determinísticaI Di�culdade de estudar um problema de desempenhoI Reexecução determinística

I Registra-se o comportamento em um primeiro momentoI Repete-se a execução obedecendo o comportamento inicial

I Obtenção de estado global (snapshot)I Útil para veri�car propriedades globais da aplicaçãoI Di�culdades: latência da rede,I Exemplo de incoerência

I Observabilidade (níveis de abstração)

I Casamento de informações independentes

I Resolução de relógios

I Formato de arquivo

26/78

Técnicas de observação e registroconceitual e prática

27/78

Visão geral das técnicas de observação / coleta

I Técnicas de observaçãoI MonitoramentoI Geração de índices estatísticosI De�nição de um per�l de execuçãoI Observação comportamental

I Técnicas de coleta e registroI AmostragemI CronometragemI ContagemI Rastreamento

28/78

Técnicas de observação (conceitual)

I Métodos utilizados para observar o comportamento

I Internos versus externos

I Observação internaI Fonte dos dados interna ao programaI Sondas de observaçãoI Instrumentação

I ExternaI Fonte externaI Somente o efeito é observado

29/78

Técnicas de observação

I Monitoramento (observação externa)I Aplicação paralela é inalteradaI Poucos detalhesI Foco: sistemas computacionais, redes de interconexão

I Geração de índices estatísticos (interna)I Tendências estatísticas através de métricas de desempenhoI Métricas

I Tempo de espera em regiões de códigoI Tempo médio de execução de uma tarefa

I Útil para isolar uma parte do programa a ser melhoradaI (necessita de uma técnica de coleta de dados)

30/78

Técnicas de observação

I De�nição de um per�l de execução (interna ou externa)I Estima o tempo gasto em partes do programaFunção / método / módulo / região de código

I Indicador global → cautela em execuções de longa duração

I Observação comportamental (interna)I Indenti�cador preciso do comportamentoI Fornece informações detalhadas para a análiseI Desvantagens relacionadas ao efeito de sonda

31/78

Qual a melhor técnica de observação?

I DependeI Tipo de análise de desempenhoI Conhecimento do analista a respeito da aplicação

I ExemplosI Per�l de execução → observação comportamentalI Monitoramento e índices estatísticos → per�l de execuçãoI Observação comportamental

I Escolha deve ser feita caso a casoI Aplicação versus sistema paralelo

32/78

Técnicas de coleta e registro (prática)

I Situação idealI Registro preciso do comportamentoI Nível de intrusão próximo de zeroI Efeito de sonda passível de compensação

I Difícil de se obter

I Cada técnica de coleta traz um equilíbrioI precisão versus intrusão

33/78

Classi�cação das técnicas de coleta

I De acordo como a maneira que o registro é lançadoI Dirigida pelo tempo ou por eventos

34/78

Amostragem (guiada pelo tempo)

I Examinar periodicamente o estado do programa

I Intervalo de tempo → frequência da amostragemI De�nido pelo analista

I Funcionamento: no momento da mediçãoI Sistema dispara uma ordem de observação

I Veri�ca qual o estado do programa, registra em memóriaI Recon�gura para que a medição ocorra novamente

I Uso bastante comum → Gerar um per�l de execuçãoI Exemplo: frequência de 20 microsegundos, função em execução

I Per�l indica somente quantas vezes a função foi executadaI Resultados são em porcentagem da quantidade de amostras

35/78

AmostragemI Qualidade dos resultados

I Inversamente proporcional ao tamanho do intervaloI Exemplo: 100 nanosegundos versus 1 segundo

I Funções em geral se executam na ordem de microsegundos

I Efeito de sonda causado pelo amostragemI Diretamente proporcional à frequência de amostragem

I Achar um bom equilíbrio entre qualidade e intrusãoI Caracterizar intrusão versus frequência da amostragem

Complexidade no uso em uma aplicação paralela

I Vários processos e computadores

I Múltiplos per�s de execução

36/78

Cronometragem (guiada por evento)

I Medir o tempo passado em uma região de código

I Instrumentação manual ou automática do código do programaI Inserir instruções extras responsáveis pela cronometragem

I FuncionamentoI No local de início da medição, disparo do cronômetroI No local do �m da medição, tempo é contabilizadoI Medições são somadas e associadas à região observada

I Gera um per�l de execuçãoI Comparação com a amostragem

37/78

CronometragemI Intrusão

I Diretamente relacionada a quantidade de cronômetrosI Mais controlável quando comparada a amostragem

I Exemplo e contra-exemploI Cronometrar a região dentro de um laço

Vantagens e desvantagens

I Flexível (analista de�ne os cronômetros)

I Manual e eventualmente complexa

Complexidade no uso em uma aplicação paralela

I Vários processos e computadores

I Múltiplos per�s de execução

38/78

Contagem (guiado por evento)

I Medir a quantidade de ocorrências de um eventoI Execução de uma funçãoI Uso de um recurso

I FuncionamentoI Quando um evento é geradoI Procura-se o contador correspondente em memóriaI Incrementa o contador

I Maior vantagemI Baixa intrusão (incremento de um contador para cada evento)I Uso em programas de longa duração com eventos frequentes

39/78

ContagemI Implementação multi-nível

I Contadores em software e hardwareI Combinação entre eles

I Contadores em softwareI Flexibilidade, adaptação, portabilidade

I Em hardwareI Imutabilidade, intrusão próxima de zeroI Esforço de padronização (PAPI)

I ExemplosI Quantidade de faltas no acesso a memória cacheI Quantas instruções foram executadas

Complexidade no uso em uma aplicação paralela

40/78

Rastreamento (guiada por evento)

I Registrar dados signi�cativos na forma de eventos datados

I Objetivo de análise: reconstrução do comportamento original

I FuncionamentoI Quando um ponto de geração de evento é atingidoI Um evento é criado e registrado em um arquivo de rastro

I Reconstrução do comportamento originalI Precisão, coerência e qualidade versus intrusão

41/78

Rastreamento � o que é um evento?

I Ocorrência de comportamento especí�co durante a execução

I ContémI Um tipoI Uma dataI Informações adicionadas de acordo com o seu tipo

I ExemplosI Início da execução de uma funçãoI Acesso ao um recurso de memóriaI Envio de uma mensagemI Liberação de um lock (mutex)

Discussão: abrangência do rastreamento

I Abordagem mais genérica que as outras

42/78

Formas de rastreamentohardware, software e híbrido

I Por hardwareI Equipamentos especializadosI Falta de �exibilidadeI Baixa intrusão

I Por softwareI Dentro da aplicação ou em bibliotecas associadasI Instruções extras embutidas

I HíbridoI Procura-se obter um bom equilíbrio entre os doisI Eventos frequentes são registrados em hardwareI Menos frequentes e con�guráveis em software

I 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 Depende do nível de conhecimento que se pretende obter

I ExemplosI Panorama geral (sem alterar código) → per�l por amostragemI Histograma temporal → per�l por cronometragem

I Registrando o comportamento das funções suspeitasI Enriquecer com contadores de hardware do processador

I Mesclando informações do nível da aplicaçãoI Rastreamento investiga problemas de comunicação

I Escolha deve ser feita caso a casoI Aplicação versus sistema paraleloI Suposição do analista e conhecimento prévio

44/78

IntervaloCo�ee-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áliseI Coleta / registro de comportamentoI Interpretação / análise do comportamento

I Inúmeras técnicas para a análise do comportamentoI Inspiradas e in�uenciadas pela forma da coleta

I ExemplosI Análise através de índices estatísticosI Construção de uma representação visual dos dados

Variabilidade de técnicas de análise

I Visão global de desempenho

I Análise local de desempenho

47/78

Objetivos da análise de desempenho

I Melhorar o desempenho da aplicação paralelaI Tempo de execuçãoI AceleraçãoI E�ciência

I Aumentar a e�ciência de utilização de recursos

I Outros objetivos?

48/78

Visão geral das técnicas de análise de desempenho

I Análise de per�s de execução

I Análise automática

I Análise por transformação de dados

I Análise interativa por visualização de rastros

49/78

Análise de per�s de execução

I Forma mais simples de ter uma ideia do desempenho

I FuncionamentoI Amostragem / cronometragemI Criação de um histograma

I Quantidade de vezes detectada (amostragem)I Tempo de execução (cronometragem)

I Histograma global versus localI Aplicação inteira / processos individuais

I Lembrete: per�l condizente com a realidadeI Discussão sobre a frequência de coleta

I Histograma baseado em dados de rastreamento

50/78

Análise automática

I Supercomputadores compostos de milhares de processadoresI Aplicações cada vez maiores

I Rastreamento e a grande quantidade de dados geradosI Ondes3D: propagação de ondas sísmicas em 3D

I 32p, execução de 50s , 100K eventosI LU.A.32: Solver Lower-upper gauss-seidel

I 32p, 4.79s, cerca de 7 milhões de eventos (142 Mbytes)I Simulador de partículas: BSP, implementação quadrática

I 32p, 6.26s, cerca de 200 milhões de eventos (2.5 Gbytes)

I Análise manual e interativa se torna difícil

51/78

Análise automática

I Detectar problemas de desempenho automaticamente

I Funcionamento através de um programa de computadorI Utiliza como entrada o registro de comportamentoamostragem / cronometragem / contagem / rastros

I Rastreamento é mais utilizada devido ao nível de detalhamentoI Investiga problemas de desempenho (data mining)I Apresenta os problemas identi�cados ao analista

Escalabilidade

I Uma quantidade maior de dados penaliza menos a análise

I Mineração de dados pode ser paralelizada e distribuída

52/78

Análise automática � padrões de desempenho ruim

I Problemas de desempenho devem ser previamente conhecidos

I Um padrão de desempenho ruim deve conterI Quantidade de processos envolvidosI Qual o comportamento de cada processo (estados e variáveis)I Estado das comunicações entre os processos

I DesvantagensI Limitada aos padrões conhecidosI 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çãoI Reduzir o volume dos dados originaisI Necessidade de criação de (novas) métricas de desempenho

I Alterar a natureza das métricas comportamentaisI Colocar em evidência características relevantes da aplicação

I ExemploI Aplicação de larga escala

I Muitos processos com comportamento semelhanteI Agrupar comportamento semelhantes

54/78

Análise por transformações de dados

I Melhor aplicada em dados oriundos do rastreamentoI Mais detalhes, estado da aplicação, do sistemaI Maiores possibilidades de transformação

I Duas abordagensI Agregação

I Operadores de agregação para redução dos dadosI Agrupamento (clustering)

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çãoI Média, Max, Min, Soma, Subtração, . . .

I ObjetivoI Agregar o comportamento de um conjunto de processosI Obter um valor que representa o comportamento do conjunto

I Dados de amostragem / cronometragemI Feita diretamente sobre os per�s de execução obtidos

I Dados de rastreamentoI Integração temporal sobre variáveis e métricas de um processoI Integração espacial sobre vários processos da aplicaçãoI Ambas

56/78

Análise por transformação de dados � agrupamento

I Procura por comportamentos similaresI Utilizando uma ou mais métricas disponíveis

I Escolhe-se um processo representativoI Minimizando as diferenças entre ele o os outros do grupo

I Amostragem / cronometragemI Per�s semelhantes de execução

I RastreamentoI Comportamento semelhante ao longo do tempoI Reduz a complexidade da análise

57/78

Análise por transformação de dados

I Vantagens (sumário)I Reduz a complexidade, o volume dos dadosI Permite de�nir uma nova visão sobre o comportamento

Desvantagens

I AgregaçãoI Suavização demasiada do comportamento heterogêneo

I AgrupamentoI 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 comportamentaisI 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 � categoriasI Técnicas de visualização comportamental

I Espaço / tempo (grá�cos de Gantt)I Eixo vertical, eixo horizontalI Eventual organização hierárquica no espaçoI Pontos fortes

I Ênfase na causalidade entre eventosI Análise de desempenho de grão �no

I Técnicas estruturaisI Evidenciam a estrutura da aplicação ou do sistemaI Correlacionam o comportamento da aplicaçãoI Independentes da linha do tempo

I Valores instantâneos ou agregados temporalmente

I Técnicas estatísticasI Grá�cos estatísticos de dispersãoI Duas ou mais variáveis correlacionadas

60/78

Análise de visualização de rastrosExemplo de técnica estrutural

Clusters

Sites

Hosts

Grid

61/78

Análise de visualização de rastros

I Vantagens (sumário)I Representação visualI InteratividadeI Experiência do analista

I DesvantagensI Escalabilidade (análise manual, limitação técnica)I 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?

Per�s, automática, transformação, visualização?

I Depende do tipo do problema de desempenho

I Técnicas de análise são complementaresI Per�s → Visualização de rastrosI Combinação diversa de técnicas

I Global versus local

63/78

Ferramentas e bibliotecasapresentação não exaustiva

64/78

Visão geral de ferramentas e bibliotecas

I Coleta e registroI Score-PI TAUI EZTraceI AkypueraI SimGrid

I AnáliseI VampirI ScalascaI ViteI PajéNGI Viva

65/78

Score-P

I Scalable Performance Measurement Infrastructure for ParallelCodes

I Focado em aplicações paralelas MPII http://www.score-p.org/

I Desenvolvido porI German BMBF project SILCI US DOE project PRIMAI Consórcio de laboratórios europeus e americanos

I Implementa várias técnicas de coletaI Rastreamento (com o formato OTF2)I Geração de per�s de execução (com o formato CUBE3)

66/78

TAU

I Tuning and Analysis UtilitiesI Suporta várias linguagens (Fortran, C, C++, Java, Python)I http://www.cs.uoregon.edu/research/tau/

I Desenvolvido porI Universidade do Oregon (Estados Unidos)

I ImplementaI Rastreamento (formato próprio)I Amostragem

I Colaboração com o projeto Score-P

67/78

EZTrace

I EZTrace � easy to use trace generatorI Focado em aplicações MPI e OpenMPI http://eztrace.gforge.inria.fr/

I Desenvolvido na França

I Implementa rastreamentoI Exporta rastros em Pajé e OTF

I Extensível (novos tipos de eventos)

I Interceptação dinâmica

68/78

Akypuera

I Akypuera (rastro em guarani)I Desenvolvido em Porto Alegre, foco em aplicações MPII https://github.com/schnorr/akypuera

I Utiliza a librastro (formato binário conciso)

I Conversores de TAU, OTF, OTF2 para Pajé

69/78

SimGrid

I SimGrid � Versatile Simulation of Distributed SystemsI Desenvolvido na FrançaI http://simgrid.gforge.inria.fr/

I Módulo de rastreamento

70/78

VampirI Ferramenta comercial oriunda de laboratório de pesquisa

I TU-Dresden, GermanyI http://vampir.eu/

I Visualização de rastros, per�s de execução, agrupamentoI Altamente escalável com distribuição

71/78

Scalasca

I ScalascaI Forschungszentrum Jülich (Alemanha)I http://www.scalasca.org/

I Análise automática, per�s de execuçãoI Algoritmos de mineração de dadosI Uma centena de padrões de desempenho ruim

I Formato CUBE4 (gerado por Score-P)

72/78

ViteI Vite

I Desenvolvido pelo INRIA BordeauxI http://vite.gforge.inria.fr/

I Visualização de rastrosI Formato Pajé e OTF

73/78

PajéNG

I PajéNGI Desenvolvido em Porto AlegreI https://github.com/schnorr/pajengI Reimplementação em C++ do Pajé original (http://paje.sf.net)

I Visualização comportamental de rastrosI pajeng, pj_dump

I Utiliza exclusivamente o formato PajéI Exporta para formato CSV

74/78

Viva

I VivaI Desenvolvido em Porto AlegreI https://github.com/schnorr/viva

I Visualização estrutural, agregação espaço-temporalI Topologia da rede (posicionamento dinâmico)I Treemaps

I 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 Desenvolvimento de aplicações paralelas de alto desempenho→ Tarefa complexa

I Análise de desempenhoI Etapa crucial no desempenho de aplicações de alto desempenho

I PortabilidadeI Processo cíclico

I Execução e coleta, seguidas por análise

77/78

Discussão

I Como utilizar estes conceitos na prática?

I Di�culdades possíveis?

78/78