• Nenhum resultado encontrado

MPI-Rastro: Monitoramento de Aplicações Paralelas MPI

N/A
N/A
Protected

Academic year: 2021

Share "MPI-Rastro: Monitoramento de Aplicações Paralelas MPI"

Copied!
6
0
0

Texto

(1)

MPI-Rastro: Monitoramento de Aplicações Paralelas MPI

Lucas Mello Schnorr, Philippe Olivier Alexandre Navaux

Grupo de Processamento Paralelo e Distribuído

Instituto de Informática - UFRGS

Abstract

The development of parallel applications usually is com-posed by three tasks: programming, correctness debugging and performance debugging. The last of these three tasks is specially important in parallel applications to obtain high performance. There are a number of tools that try to turn the performance debugging more convenient to the program-mer. However, most of them are ad-hoc implementations. A more proeminent tool that is trying to became a standard is MPE - Multiprocessing Environment, which is distributed with MPICH implementation. The drawback of this tool is that it does not have support to all MPI operations and has a limited number of functions that can be used by the pro-grammer. This paper describes MPI-Rastro library, which tries to solve the main problems of MPE implementation and still being portable. To use this library, the program-mer does not have to modify the application and have ben-efits like low intrusion and integrate the data with informa-tion collected by other tools.

1. Introdução

O ciclo de desenvolvimento de aplicações paralelas nor-malmente pode ser dividido em três etapas: programação, correção de erros e depuração de desempenho. Na primeira etapa, o programador usualmente faz uso de ferramentas e bibliotecas de comunicação. Essas bibliotecas podem im-plementar diferentes formas de comunicação entre proces-sos, como por passagem de mensagem ou memória com-partilhada distribuída. Na segunda parte, correção de er-ros, o programador procura corrigir sua aplicação de forma que seus resultados sejam confiáveis. Essa etapa é principal-mente importante quando a aplicação paralela envolve cál-culos cujos resultados podem ser usados para tomada de de-cisão. A última etapa, considerada essencial nas aplicações paralelas que objetivam alto desempenho, é a depuração de desempenho. Nesta etapa, o programador faz uso de ferra-mentas e instrumentações em seu programa com o intuito de observar o comportamento da aplicação. Em geral, o

resul-tado dessa observação deve fornecer dados e informações que são úteis ao programador para que ele possa melhorar o desempenho de sua aplicação.

Neste contexto, este trabalho tem como foco a etapa de depuração de desempenho. Existem várias formas de re-alizar esta etapa, como por exemplo, a análise estatística dos tempos de execuções de regiões do código, verificação da parte de comunicação da aplicação paralela e visualiza-ção do comportamento dos programas após ou durante a ex-ecução. Embora existam várias formas de realizar a análise de desempenho de uma aplicação, ainda não há um con-senso de qual é o melhor método para ser aplicado. Em geral, isto ocorre porque as diferentes formas de construir aplicações paralelas nas diferentes arquiteturas e topologias de rede obrigam o uso de técnicas ad-hoc.

Ferramentas de instrumentação foram criadas no sentido de tentar padronizar a forma de se analisar o desempenho de aplicações paralelas. Atualmente, uma das principais imple-mentações da norma MPI [14], chamada MPICH [4], trás consigo uma biblioteca de rastreamento de aplicações. Esta biblioteca, chamada MPE - Multi-processing Environment tem como objetivo fornecer ao programador uma forma de se registrar o comportamento da aplicação paralela durante a sua execução. Esse registro é descrito por eventos que po-dem ser analisados após a execução da aplicação, por uma ferramenta de visualização específica. O problema desta abordagem é, por um lado, o formato de arquivo especí-fico da ferramenta, mas por outro lado e mais importante, a falta do monitoramento de determinado conjunto de oper-ações que podem ser usadas nas aplicoper-ações MPI. Isto ocorre porque nem todas as operações MPI são monitoradas pela MPE, devido a complexidade e o custo computacional do seu uso. No entanto, grande parte destes custos podem ser evitados quando utilizadas técnicas de compactação do reg-istro de eventos e utilização de buffers em memória.

Neste contexto, este artigo descreve o desenvolvimento da biblioteca MPI-Rastro. O trabalho tem como objetivo suprir as lacunas deixadas pela MPE nas aplicações MPI, sem forçar o programador a alterar sua aplicação, e utilizar métodos que resultem em uma baixa intrusão a aplicação, de forma que seu comportamento permaneça o mais natural possível. Além desses objetivos, este trabalho também

(2)

con-sistiu na construção de um módulo MPI-Rastro para o mod-elo de integração de dados DIMVisual [8]. Através disto, é possível analisar informações do nível da aplicação em conjunto com dados de monitoramento, coletados por fer-ramentas como Ganglia [6] e Performance Co-Pilot [11].

O artigo está organizado da seguinte forma: a próxima seção descreve conceitos básicos; a seção 3 apresenta os tra-balhos relacionados pertinentes ao trabalho; a seção 4 apre-senta a MPI-Rastro. Depois disso, na seção 5, conclusões e trabalhos futuros são apresentados.

2. Conceitos Básicos

Existem várias formas de realizar a análise de desem-penho de aplicações paralelas. Uma forma relativamente co-mum é a análise visual dos dados integrada com resultados quantitativos das informações. O monitoramento de apli-cações pode ser basicamente dividido em dois tipos: online e offline. No monitoramento online, o programador anal-isa as informações da aplicação durante a sua execução. No monitoramento offline, as informações são registradas durante a execução para que a análise seja feito posterior-mente.

O monitoramento offline é mais adequado para a análise de desempenho pois em geral insere uma menor intrusão no comportamento normal da aplicação. Esse tipo de moni-toramento funciona através do registro de eventos. Para esse registro, o programador normalmente faz uso de bibliote-cas de instrumentação. Essa instrumentação pode ocorrer no nível da biblioteca de programação ou no próprio nível da aplicação. Grande parte das ferramentas de instrumen-tação funcionam no nível da aplicação, obrigando o progra-mador a alterar sua aplicação. Em qualquer um dos casos, são gerados eventos durante a execução dos pontos de in-strumentação. Os eventos normalmente tem aliado a si um identificador único do tipo do evento e outras informações referentes a este tipo. Por exemplo, podem existir eventos de envio e recebimento de dados, início e fim da execução de determinado função. Em geral, todo evento tem também um timestamp, que é a data exata de quando determinado evento aconteceu.

Infraestruturas para a execução de aplicações paralelas podem ser compostas por diferentes máquinas com difer-entes características. Para uma correta análise das infor-mações após o período de execução de uma aplicação, é essencial que todos os eventos gerados estejam sincroniza-dos. Caso isso não ocorra, a ordem causal dos eventos pode ser quebrada e tornar a informação de rastreamento inútil. Dessa forma, é essencial que haja algum sistema de sin-cronização de relógios das máquinas de forma que os even-tos possam ter seus timestamps corrigidos para a análise. Existem diferentes técnicas para a sincronização de reló-gios. No entanto, o ideal é que sejam usadas técnicas [5]

que não alterem os eventos durante a execução da apli-cação, pois isso aumentaria a intrusão do sistema de moni-toramento. A seguir são descritas brevemente três ferramen-tas que estão diretamente relacionadas ao trabalho descrito neste artigo: libRastro [2], uma biblioteca de rastreamento de baixa intrusão; DIMVisual [8, 10, 7], um modelo de in-tegração de dados; e Pajé [3, 13], uma ferramenta genérica de visualização.

2.1. libRastro

libRastro [2] é uma biblioteca de baixa intrusão para a instrumentação de aplicações. Suas principais característi-cas para atingir baixa intrusão é a utilização de buffer em memória, formato binário com alinhamento de bits para poupar espaço em memória e a utilização de uma técnica de sincronização não intrusiva. Embora essa biblioteca possa ser usada no nível da aplicação, sua utilização principal é na instrumentação de bibliotecas de comunicação ou de middlewares de execução de aplicações paralelas. Através de programas distribuídos junto com a libRastro, o progra-mador que usa a libRastro pode compor qualquer tipo de função com dados a serem registrados. Esses programas re-alizam analisam o código do programador e criam as im-plementações das funções de instrumentação automatica-mente.

2.2. DIMVIsual

DIMVisual é um modelo de integração de dados para a análise de aplicações paralelas e ambientes como clusters. Esse modelo de integração tem como característica princi-pal a independência tanto dos formatos de entrada quanto dos formatos de arquivo de saída. Para adicionar um novo leitor de formato, basta construir um módulo utilizando pro-tocolos e componentes pré-definidos. Através da implemen-tação deste modelo, é possível integrar dados de diferentes níveis do sistema computacional usado para executar al-guma aplicação paralela. Com os dados integrados, o pro-gramador dessa aplicação pode ter um melhor entendimento do que ocorreu com a aplicação paralela. Atualmente, a im-plementação do DIMVisual permite a integração de infor-mações registradas durante a execução de aplicações desen-volvidas em MPI, através da biblioteca MPE, e DECK [1, 9] com dados coletados pelo Ganglia e Performance Co-Pilot. Como saída, a implementação do DIMVisual gera um ar-quivo único que pode ser visualizado no Pajé.

Este trabalho descreve também a criação de um módulo da MPI-Rastro para o DIMVisual, de forma que possam ser aproveitadas essas características de integração de in-formações.

(3)

2.3. Pajé

Pajé é uma ferramenta genérica de visualização focada principalmente para o uso no desenvolvimento e análise de aplicações paralelas. A principal característica de Pajé é a sua extensibilidade a diferentes contextos, desde a visual-ização de aplicações desenvolvidas com o paradigma de orientação a objetos até aplicações desenvolvidas com bib-liotecas de passagem de mensagem. Pajé também se adapta a situações onde a quantidade de informações é grande, oferencendo detalhes em determinadas parte da análise do programa assim como uma visão geral do comportamento da aplicação.

3. Trabalhos Relacionados

Existem várias ferramentas para o monitoramento de aplicações paralelas desenvolvidas com MPI. Uma delas, a MPE - Multiprocessing Environment, é distribuída em con-junto com a implementação MPICH [4]. Ao utilizar a MPE, o programador não precisa se preocupar em instrumentar a sua aplicação. No momento de compilar seu programa, ele deve apenas ligar sua aplicação com a biblioteca MPE. To-das as funções da biblioteca MPICH são monitoraTo-das. No entanto, apenas um conjunto de funções básicos send/recv de comunicação é monitorado. Todas as operações coleti-vas, como as operações de gather e scatter não são moni-toradas. A parte de sincronização da ferramenta é feita no momento que todos os processos executam finalize. Neste momento, a biblioteca MPE troca algumas informações e corrige os timestamps dos eventos já registrados. MPE e seus diferentes formatos de arquivo tem ferramentas especí-ficas para a análise dos dados. Uma dessas ferramentas é o JumpShot, que mantém um gráfico espaço-tempo com os estados e as comunicações entre os processos.

Outra ferramenta para monitoramento de aplicações é o Cosmos [12]. Essa ferramenta consiste em três diferentes módulos, cada um sendo responsável pela coleta de in-formações nos níveis de aplicação, sistema operacional e rede. No caso da aplicação, Cosmos oferece um conjunto de funções em diferentes linguagens que o programador pode usar de forma que se registre o comportamento de sua apli-cação. A principal desvantagem desta abordagem é que o programador é obrigado a usar um conjunto específico de funções. Para a análise dos dados registrados, Cosmos tem uma ferramenta específica que pode mostrar as informações textualmente e graficamente.

Discussão

O monitoramento offline de aplicações MPI através da técnica de instrumentação está bem difundido. Isso se re-flete na quantidade de opções que os programadores tem

para monitorar seus programas. No entanto, grande parte dessas opções tem limitações ou são soluções específicas. Em termos de limitações, as bibliotecas de instrumentação normalmente são oferecidas diretamente ao programador, com um conjunto limitado ou muito complexo de funções para serem usadas. A ferramenta MPE, que é transpar-ente ao programador, tem apenas um conjunto limitado de funções monitoradas. Por outro lado, as soluções especí-ficas são aquelas construídas para determinada biblioteca ou aplicação. Essas soluções, conhecidas como ad-hoc, não são passiveis de utilização com implementações diferentes da especificação MPI, por exemplo.

Na próxima seção será apresentada a MPI-Rastro. Essa biblioteca tenta suprir e preencher as lacunas deixadas pelas ferramentas de instrumentação já existentes.

4. MPI-Rastro

A biblioteca MPI-Rastro tem como objetivo principal o rastreamento de aplicações desenvolvidas com alguma im-plementação da especificação MPI. Além desse objetivo principal, a biblioteca pretende ter as seguintes caracterís-ticas:

Extensível: a biblioteca deve ser capaz de ter seu uso

estendido a todas as implementações da norma MPI. Deve permitir ao programador adicionar novos tipos de eventos de acordo com a necessidade.

Configurável: o programador deve ser capaz de

progra-mar o comportamento do monitoramento, especifi-cando tipos de eventos que devem ser registrados em determinadas regiões da aplicação paralela.

Baixa intrusão: a biblioteca deve ter uma baixa intrusão,

de forma que o comportamento da aplicação não fique muito diferente do normal.

Simplicidade: o programador não deve se

preocu-par com detalhes do funcionamento do monitora-mento, de forma que a biblioteca seja o mais simples possível de usar.

Transparência: a biblioteca deve ser usada de forma

transparente, sem alterações significativas no código das aplicações paralelas.

Com essas características, MPI-Rastro pode se adaptar a diferentes situações e necessidades. Por exemplo, o pro-gramador tem a liberdade de ativar o monitoramento apenas em regiões específicas de seu programa ou então deixar que a biblioteca monitore toda a execução da aplicação. Outra situação ocorre quando o programador já tem uma aplicação MPI pronta e deseja monitorar: usando a MPI-Rastro, ele não precisa alterar o código de sua aplicação para obter in-formações de rastreamento.

(4)

As próximas sub-seções detalhem o funcionamento da MPI-Rastro, desde a sua arquitetura até questões como quais funções foram monitoradas. No final desta seção é descrito o módulo que foi integrado ao DIMVisual para que dados registrados pela MPI-Rastro possam ser analisados em conjunto com informações de ferramentas de monitora-mento de recursos.

4.1. Visão Geral

A figura 1 mostra como a MPI-Rastro é usada no de-senvolvimento, execução e análise da aplicação MPI. Na fase de desenvolvimento, o programador inclui um cabeçãlho referente a MPI-Rastor. Depois disso, o progra-mador pode usar normalmente as funções da norma MPI, como MPI_Init e MPI_Send. Na segunda fase, de exe-cução e rastreamento, as chamadas as funções MPI são rastreadas e os eventos são registrados. No fim desta se-gunda fase, tem-se um conjunto de arquivos, um para cada processo MPI. A terceira fase é composta pela in-tegração desses vários arquivos em um único, eventual-mente com informações de ferramentas de monitoramento de recursos. Essa integração é feita pelo DIMVisual e a vi-sualização e análise dos dados é feita através da ferra-menta Pajé. As próximas sub-seções detalhem cada uma dessas fases. MPI−rastro MPI−rastr MPI−rastro MPI−rastro MPI−rastr DIMVisual Paje Desenvolvimento Execução e Rastreamento Tradução e Visualização

MPI Aplicação

Figure 1. As três fases do monitoramento de aplicações paralelas utilizando a MPI-rastro.

4.2. Desenvolvimento

A fase de desenvolvimento é onde o programador desen-volve sua aplicação. O programador inclui um cabeçalho da MPI-Rastro em seu código para que ela possa ser uti-lizada no rastreamento da aplicação. Um conjunto auxiliar de funções da MPI-Rastro é fornecida para o programador

para ele controlar o monitoramento de sua aplicação. O pro-gramador não é obrigado a utilizar estas funções, pois seu uso opcional é apenas em situações onde o programador que ter controle sobre quais regiões de sua aplicação devem ser monitoradas. A seguir são apresentadas essas funções aux-iliares e uma breve descrição:

MPIRastro_Enable e MPIRastro_Disable: funções que

habilitam e desabilitam o monitoramento de todas as chamadas MPI, respectivamente.

MPIRastro_Update_Mask (int mask): esta função

re-cebe como parâmetro uma máscara e habilita ou desabilita o monitoramento apenas para determi-nado conjunto de funções.

Com essas três funções, o monitoramento pode ser con-figurado no momento do desenvolvimento da aplicação. Após uma execução e posterior análise do desempenho da aplicação paralela, o programador pode alterar a utiliza-ção dessas funções para que outro conjunto de dados se-jam monitorados, por exemplo.

O parâmetro mask da terceira função de customização serve para o programador customizar o que deseja monitrar. Todas as vezes que determinada função MPI for ser execu-tada, essa máscara é posta em cheque com a assinatura da função. Dessa forma, o programador pode escolher que con-junto de funções deseja monitorar, como por exemplo, co-municações coletivas do tipo gather ou scatter, funções de inicialização, entre outras.

4.3. Execução e Rastreamento

A MPI-Rastro instrumenta as aplicações MPI através da redefinição das funções da especificação. Por exemplo, no momento que o programador vai compilar sua aplicação, todas as funções da biblioteca MPI são automaticamente redefinidas para, antes de executarem o código da bib-lioteca MPI, executar uma pequena instrumentação da MPI-Rastro que registra determinado evento. Após esse registro, a MPI-Rastro chama a função original da biblioteca MPI. A figura 2 apresenta o funcionamento da MPI-Rastro quando uma determinada função MPI é executada, neste caso, a MPI_Send. Antes e depois da execução da função da bib-lioteca são registrados dois tipos de eventos, um para indicar o início do estado de envio dos dados e outro para indicar o fim. Também são registradas informações adicionais, como qual o processo MPI registrou o evento e dados para realizar o casamento deste envio com o recebimento por outro pro-cesso MPI.

Todas as funções da especificação MPI podem ser mon-itoradas. Cada conjunto de funções tem dados específicos que são registrados junto com os eventos. Nas operações co-letivas são gravadas as informações de quem é o processo principal da operação, qual o comunicador utilizado para a

(5)

void recebe_dados (...) {

}

MPI_Recv (...);

MPI−Rastro − início de instrumentação

MPI−Rastro − fim de instrumentação MPI_Recv (...) {

}

Figure 2. Interceptação da função MPI_Send durante a execução de uma aplicação.

operação e qual a quantidade de dados a serem transferi-dos. Algumas funções de comunicação coletiva do MPI es-tão associados a uma determinada operação, como soma, subtração, entre outras. Nestes casos, a operação também é registrada. Nas funções de comunicação ponto-a-ponto são registrados nos eventos o processo origem e destinatário, além do tamanho da mensagem e o comunicador.

Como resultado dessa fase tem-se um conjunto de ar-quivos, um para cada processo, com os evento registrados. Esses arquivos são fornecidos para a terceira fase, que será descrita na próxima sub-seção.

4.4. Análise e Visualização

O fim da segunda fase dá como resultado um conjunto de arquivos com os eventos registrados. A próxima etapa é a transformação e integração desses eventos para que pos-sam ser analisados conjuntamente. Assim, a terceira fase da utilização da MPI-Rastro é a fase de Análise e Visualiza-ção. Nesta fase, o programador utiliza a implementação do DIMVisual para a integração dos dados e Pajé para realizar a visualização.

A utilização do DIMVisual nesta etapa é importante pois é através dele que os arquivos são integrados. Além disso, é possível através dessa utilização a adição de informações de outros níveis do ambiente de execução, como o sistema op-eracional e informações da rede de interconexão entre os processos. O módulo MPI-Rastro construído para DIMVi-sual pode ser dividido em três partes: um leitor, um sin-cronizador e um conversor de dados. A figura 3 mostra este módulo visualmente. O leitor tem como responsabili-dade a leitura dos arquivos de dados registrados durante a segunda fase. O sincronizador realiza a sincronização dos timestamps dos eventos, levando em conta também eventos que podem ter sido registrados por outras fonte de dados. O conversor, por fim, coopera com o controlador do DIMVi-sual para que haja a integração dos dados. É no conversor que fica a parte que converte as informações para o formato da ferramenta de visualização Pajé. Na saída do

conver-sor tem-se um conjunto de eventos, específicos do módulo MPI-Rastro, que podem então ser registrados no mesmo ar-quivo de saída. Dados Eventos

S

L

C

MPI−Rastro

Figure 3. Módulo da biblioteca MPI-Rastro para o DIMVisual.

A figura 4 mostra uma visualização esquemática de uma aplicação MPI monitorada com a MPI-Rastro. Este visual-ização é idêntica a tela do Pajé. Os elementos retangulares horizontais representam os diferentes processos MPI execu-tando em diferentes máquinas. Os tons diferentes que esses retângulos podem ter ao longo do eixo X representam os diferentes estados, que normalmente estão associados a ex-ecução de uma função MPI. Na figura, dois tipos de comu-nicação estão representados: as duas primeiras setas da es-querda para a direita representam uma comunicação do tipo broadcast; as outras duas setas representam comunicações ponto-a-ponto entre os processos.

Pajé oferece diferentes recursos que permitem ao pro-gramador analisar o comportamento da aplicação. Esses re-cursos incluem a inspeção de entidades na janela de visual-ização, geração de dados estatísticos e filtragem de grande quantidade de dados. A MPI-Rastro coopera com Pajé no sentido de oferecer informações detalhadas a respeito da aplicação. Um tipo especial é a correlação entre a janela de visualização e o código fonte, de forma que o progra-mador, ao clicar em determinado objeto na janela, pode ver que ponto em seu programa gerou determinado evento.

5. Conclusão

Na área de processamento paralelo, uma impor-tante tarefa é a análise de desempenho de aplicações paralelas. Neste artigo, foi visto que existem diferentes for-mas de realizar esta tarefa. No entanto, grande parte das soluções podem ser consideradas ad-hoc. No caso es-pecífico da implementação de aplicações paralelas com MPI, existem diferentes ferramentas que pretendem re-alizar o monitoramento offline de aplicações paralelas e fornecer ao programador dados para análise dos progra-mas. Um exemplo desse tipo de ferramenta é a MPE,

(6)

Nó 0 Nó 1 Nó 2            

Figure 4. Visualização esquemática de uma aplicação MPI monitorada com MPI-Rastro.

distribuída com a implementação MPICH. Essa e out-ras ferramentas tem lacunas ainda a serem preenchidas, como a possibilidade de serem mais completas em re-lação a monitoramento das aplicações e a transparência ao programador.

Neste contexto, este artigo descreve a biblioteca MPI-Rastro. Esta biblioteca, desenvolvida especificamente para a análise de desempenho de aplicações paralelas em MPI, tem como objetivos ser extensível, configurável, ter baixa in-trusão, simplicidade e transparência. Com essas caracterís-ticas, acredita-se que a MPI-Rastro seja uma solução mais completa que as outras ferramentas de rastreamento de apli-cações MPI.

Como trabalhos futuros, pretende-se realizar uma análise quantitativa da sobrecarga da MPI-Rastro em comparação com outras ferramentas. Essa análise quantitativa deve ser feita não só em relação ao tempo consumido pelas execução das instrumentações mas também relacionados a quantidade de recursos utilizados, como memória. Além disso, espera-se como trabalhos futuros a utilização da MPI-Rastro para o monitoramento e análise de desempenho de aplicações reais, pois os testes iniciais foram feitos apenas com apli-cações protótipo organizadas como mestre-escravo.

References

[1] Marcos Barreto, Michel Riviere, and Philippe Navaux. Deck: a new model for a distributed executive kernel integrating communication and multithreading for support of distributed object oriented application with fault tolerance support. In

Trabajos Seleccionados do Congreso Argentino de Ciencias de la Computacion, 4, volume 2, pages 623–637, Neuquém,

Argentina, 1998.

[2] Gabriela Jacques da Silva and Benhur de Oliveira Stein. Uma biblioteca genérica de geração de rastros de execução para

visualização de programas. In SimpÓsio de InformÁtica da

RegiÃo Centro, volume 1, Santa Maria, Brasil, 2002.

[3] J. Chassin de Kergommeaux and B. de Oliveira Stein. Flexible performance visualization of parallel and dis-tributed applications. Future Generation Computer Systems, 19(5):735–747, 2003.

[4] William Gropp, Ewing Lusk, and Anthony Skjellum.

Us-ing MPI: portable parallel programmUs-ing with the message-passing interface. MIT Press, Cambridge, MA, USA, 1994.

[5] Eric Maillet and Cécile Tron. On efficiently implement-ing global time for performance evaluation on multiproces-sor systems. Parallel Distributed Computing, 28(1):84–93, 1995.

[6] Matthew L. Massie, Brent N. Chun, and David E. Culler. The ganglia distributed monitoring system: Design, implementa-tion, and experience. Parallel Computing, 30(7):817–840, 2004.

[7] Lucas Mello Schnorr. Visualização simultânea e multi-nível de informações de monitoramento de cluster. Master’s thesis, Programa de Pós-Graduação em Ciência da Com-putação/UFRGS, 2005.

[8] Lucas Mello Schnorr, Benhur de Oliveira Stein, and Philippe Olivier Alexandre Navaux. Dimvisual: Data integration model for visualization of parallel programs behavior. In

CCGRID ’06: Proceedings of the 6th International Sympo-sium on Cluster Computing and the Grid. IEEE Computer

Society, 2006.

[9] Lucas Mello Schnorr, Benhur Stein, and Philippe Navaux. Visualização da biblioteca de comunicação deck em pajé. In Anais do 2 Workshop de ProgramaÇÃo Paralela e

Dis-tribuÍda, pages 153–158, Porto Alegre, Brasil, 2004. Porto

Alegre: GPPD.

[10] Lucas Mello Schnorr, Benhur Stein, and Philippe Navaux. Dimvisual: Um modelo de integração visual de dads. In

Workshop de Processamento Paralelo e Distribuído, Porto

Alegre, RS, Brazil, 2005. Grupo de Processamento Paralelo e Distribuído.

[11] SGI. Performance co-pilot users and administrators guide. Available at: http://oss.sgi.com/projects/pcp/, 1999. [12] C. Steigner and J. Wilke. Performance tuning of distributed

applications with CoSMoS. In Proceedings of the 21st

International Conference on Distributed Computing Sys-tems, ICDCS, pages 173–180, Los Alamitos, CA, 2001. Los

Alamitos: IEEE Computer Society.

[13] Benhur Stein, Jacques Chassin de Kergommeaux, and Pierre-Eric Bernard. Pajé, an interactive visualization tool for tun-ing multi-threaded parallel applications. Parallel

Comput-ing, 26:1253–1274, 2000.

[14] D. W. Walker and J. J. Dongarra. MPI: a standard Mes-sage Passing Interface. Supercomputer, 12(1):56–68, Jan-uary 1996.

Referências

Documentos relacionados

É importante dizer que a detecção por fluorescência se mostrou muito eficaz para a determinação de glifosato, pois inicialmente, além do desenvolvimento de uma

As atuais Piscinas Descobertas Municipais de Lamego, constituem, sem dúvida, um importantíssimo equipamento desportivo e recreativo, à escala regional, que não apenas

No segundo estudo, a associação entre as taxas de mudança dos índices de QV do NEI VFQ-25 e a progressão do dano glaucomatoso em diferentes regiões do campo visual (central

A producao ideal para frangos de corte so pode ser obtida quando a ave estiver submetida a uma temperatura ambiente adequada, sem nenhum desperdicio de energia, tanto para compensar

4.2 – Desequilíbrio redox mitocondrial mediante a interação entre dieta hiperlipídica e deficiência de NNT está diretamente relacionado com a progressão de esteatose simples

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Pelas razões antes expostas e considerando as especificidades do setor educacional, para a educação infantil, o ensino fundamental e o ensino médio, os percentuais propostos para

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo