Análise de desempenho de programas paralelos

78

Transcript of Análise de desempenho de programas paralelos

Page 1: 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

Page 2: Análise de desempenho de programas paralelos

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 [email protected]

2/78

Page 3: Análise de desempenho de programas paralelos

Funcionamento / Sondagem

I Interrupções são bem-vindas

I Dúvidas, pergunte imediatamente

I Experiência prévia?

3/78

Page 4: Análise de desempenho de programas paralelos

Introduçãoe motivação

4/78

Page 5: Análise de desempenho de programas paralelos

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

Page 6: Análise de desempenho de programas paralelos

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

6/78

Page 7: Análise de desempenho de programas paralelos

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

7/78

Page 8: Análise de desempenho de programas paralelos

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

8/78

Page 9: Análise de desempenho de programas paralelos

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

#1 na lista Top500 em novembro de 2013

9/78

Page 10: Análise de desempenho de programas paralelos

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

Page 11: Análise de desempenho de programas paralelos

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

Page 12: Análise de desempenho de programas paralelos

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

Page 13: Análise de desempenho de programas paralelos

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

Page 14: Análise de desempenho de programas paralelos

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

Page 15: Análise de desempenho de programas paralelos

Conceitos básicose terminologia

15/78

Page 16: Análise de desempenho de programas paralelos

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

Page 17: Análise de desempenho de programas paralelos

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

Page 18: Análise de desempenho de programas paralelos

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

Page 19: Análise de desempenho de programas paralelos

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

Page 20: Análise de desempenho de programas paralelos

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

Page 21: Análise de desempenho de programas paralelos

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

Page 22: Análise de desempenho de programas paralelos

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

Page 23: Análise de desempenho de programas paralelos

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

Page 24: Análise de desempenho de programas paralelos

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

Page 25: Análise de desempenho de programas paralelos

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

Page 26: Análise de desempenho de programas paralelos

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

Page 27: Análise de desempenho de programas paralelos

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

27/78

Page 28: Análise de desempenho de programas paralelos

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

Page 29: Análise de desempenho de programas paralelos

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

Page 30: Análise de desempenho de programas paralelos

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

Page 31: Análise de desempenho de programas paralelos

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

Page 32: Análise de desempenho de programas paralelos

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

Page 33: Análise de desempenho de programas paralelos

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

Page 34: Análise de desempenho de programas paralelos

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

Page 35: Análise de desempenho de programas paralelos

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

Page 36: Análise de desempenho de programas paralelos

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

Page 37: Análise de desempenho de programas paralelos

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

Page 38: Análise de desempenho de programas paralelos

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

Page 39: Análise de desempenho de programas paralelos

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

Page 40: Análise de desempenho de programas paralelos

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

Page 41: Análise de desempenho de programas paralelos

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

Page 42: Análise de desempenho de programas paralelos

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

Page 43: Análise de desempenho de programas paralelos

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

Page 44: Análise de desempenho de programas paralelos

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

Page 45: Análise de desempenho de programas paralelos

IntervaloCo�ee-break

45/78

Page 46: Análise de desempenho de programas paralelos

Técnicas para análise de desempenho

46/78

Page 47: Análise de desempenho de programas paralelos

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

Page 48: Análise de desempenho de programas paralelos

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

Page 49: Análise de desempenho de programas paralelos

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

Page 50: Análise de desempenho de programas paralelos

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

Page 51: Análise de desempenho de programas paralelos

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

Page 52: Análise de desempenho de programas paralelos

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

Page 53: Análise de desempenho de programas paralelos

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

Page 54: Análise de desempenho de programas paralelos

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

Page 55: Análise de desempenho de programas paralelos

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

Page 56: Análise de desempenho de programas paralelos

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

Page 57: Análise de desempenho de programas paralelos

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

Page 58: Análise de desempenho de programas paralelos

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

Page 59: Análise de desempenho de programas paralelos

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

Page 60: Análise de desempenho de programas paralelos

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

Page 61: Análise de desempenho de programas paralelos

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

Clusters

Sites

Hosts

Grid

61/78

Page 62: Análise de desempenho de programas paralelos

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

Page 63: Análise de desempenho de programas paralelos

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

Page 64: Análise de desempenho de programas paralelos

Ferramentas e bibliotecasapresentação não exaustiva

64/78

Page 65: Análise de desempenho de programas paralelos

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

Page 66: Análise de desempenho de programas paralelos

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

Page 67: Análise de desempenho de programas paralelos

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

Page 68: Análise de desempenho de programas paralelos

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

Page 69: Análise de desempenho de programas paralelos

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

Page 70: Análise de desempenho de programas paralelos

SimGrid

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

I Módulo de rastreamento

70/78

Page 71: Análise de desempenho de programas paralelos

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

Page 72: Análise de desempenho de programas paralelos

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

Page 73: Análise de desempenho de programas paralelos

ViteI Vite

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

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

73/78

Page 74: Análise de desempenho de programas paralelos

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

Page 75: Análise de desempenho de programas paralelos

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

Page 76: Análise de desempenho de programas paralelos

Conclusão e discussão

76/78

Page 77: Análise de desempenho de programas paralelos

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

Page 78: Análise de desempenho de programas paralelos

Discussão

I Como utilizar estes conceitos na prática?

I Di�culdades possíveis?

78/78