• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Parallevirtualmachine monografia
 

Parallevirtualmachine monografia

on

  • 251 views

monografia faculdade de ciencia da computação

monografia faculdade de ciencia da computação

Statistics

Views

Total Views
251
Views on SlideShare
251
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Parallevirtualmachine monografia Parallevirtualmachine monografia Document Transcript

    • Parallel Virtual Machine Francisco Selingardi Orientação Prof. Adriano Pilla Monografia apresentada à Faculdade de Ciências Administrativas das Faculdades de Valinhos - FCA/FAV, como parte dos requisitos para a obtenção do título de Bacharel em Ciência da Computação. FAV – Valinhos 2003
    • 2 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Ao meu pai Durval Selingardi (in memoriam), à minha mãe Alia Rezek Selingardi e a minha esposa Valquiria, pelo apoio e pela presença constante em todos os momentos da minha vida. Em especial a minha irmã Eduarda que foi minha fiadora no FIES.
    • 3 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO © Copyright 2003 por Francisco Selingardi Todos os Direitos Reservados
    • 4 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Agradecimentos Quero expressar meus sinceros e verdadeiros agradecimentos aos professores do Curso de Ciência da Computação das Faculdades de Valinhos pelo apoio, dedicação e pela aplicação de cada um no ensino de suas respectivas disciplinas, ensinamentos de grande valor para a realização da presente monografia. Quero deixar meu especial agradecimento ao professor Adriano Pilla pelo empenho e pela orientação dada para que a minha monografia atingisse os seus objetivos.
    • 5 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Resumo A rápida evolução da computação e as transformações que isso tem proporcionado, contribuíram para o surgimento prático da computação paralela. A computação paralela possui a vantagem do alto desempenho, porém existem fatores, como alto custo de aquisição e manutenção, e dependência ao fabricante, que diminuem esta vantagem. Uma solução para este problema é a utilização de sistemas distribuídos (criadas inicialmente para compartilhar recursos de alto custo) como plataformas de execução paralela, fornecendo menor custo de implantação e maior flexibilidade no processo computacional paralelo. Embora as duas áreas tenham surgido por razões diferentes, observou-se uma rápida convergência ao longo da última década, resultando em um forte inter- relacionamento. Devido a isto, vários trabalhos foram desenvolvidos com o objetivo de utilizar a computação paralela sobre sistemas distribuídos onde, a idéia básica é ter um grupo de computadores interligados, funcionando como os elementos de processamento de uma máquina paralela.
    • 6 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO SUMÁRIO CAPITULO 1 – INTRODUÇÃO......................................................... 11 CAPITULO 2 –PARALELISMO E CONCORRÊNCIA 2.1 Paralelismo e Concorrência ........................................................ 12 CAPITULO 3 – COMPUTAÇÃO PARALELA EM SISTEMAS HETEROGÊNEOS 3.1 Problemas e Vantagens ............................................................. 15 3.2 Vantagens da utilização do PVM................................................. 17 CAPITULO 4 – O QUE É O PVM 4.1 Arquitetura PVM.......................................................................... 18 4.2 História do PVM .......................................................................... 20 4.3 Visão geral .................................................................................. 21 4.4 O que as máquinas precisam para rodar o PVM......................... 22 4.5 Linguagens.................................................................................. 23 CAPITULO 5 – O SISTEMA PVM 5.1 Descrição do sistema PVM ......................................................... 25 5.2 Princípios..................................................................................... 26 5.3 Protocolos ................................................................................... 30 5.4 Técnicas de programação........................................................... 32 5.5 Máquina virtual............................................................................ 35 CAPITULO 6 – MANUAL DE INSTALAÇÃO E FUNCIONAMENTO 6.1 Configurando o ambiente ............................................................ 36 6.2 Comandos................................................................................... 37 6.3 Funções ...................................................................................... 37
    • 7 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 6.3.1 Funções de informação...................................................... 37 6.3.2 Funções de gerenciamento de buffers ............................... 38 6.3.3 Funções de envio de dados ............................................... 38 6.3.4 Funções de recepção de dados ......................................... 40 6.4 Executando uma aplicação no PVM............................................ 40 6.5 Algumas dicas de compilação em PVM ...................................... 41 6.6 Balanceamento de carga............................................................. 42 6.7 Interface gráfica XPVM................................................................ 44 6.8 Exemplos de Programas PVM ................................................... 44 CAPITULO 7 – Conclusão................................................................. 47 Referências Bibliográficas................................................................. 48
    • 8 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Índice de figuras Figura 2.1 Paralelismo físico ............................................................. 12 Figura 2.2 Paralelismo lógico ............................................................ 13 Figura 4.1 Arquitetura PVM............................................................... 18 Figura 5.1 Sistema PVM .................................................................. 24 Figura 5.2 Sistema PVM a) Modelo computacional e (b) visão arquitetural.............................. 25 Figura 5.3 Databuf............................................................................. 29 Figura 5.5 Modelo de comunicação realizada no PVM ................... 30 Figura 5.6 Cabeçalho do pacote PVmd-PVmd ................................ 32 Figura 5.7 Cabeçalho do pacote PVmd Tarefa e Tarefa-Tarefa ..................................................................... 32 Figura 5.8- Arquitetura MIMD............................................................ 33 Figura 5.9 - Arquitetura SPMD .......................................................... 34
    • 9 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Índice de tabelas Tabela 4.1 - Equipamentos que podem ser utilizados pelo PVM ...... 23 Tabela 4.2 - Máquinas suportadas pelo PVM e códigos para a variável PVM_ARCH........................................................................................ 36
    • 10 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO
    • 11 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO CAP. I - INTRODUÇÃO O presente trabalho tem como objetivo a apresentação dos conceitos básicos sobre PVM, considerando que a referida tecnologia se apresenta atualmente como uma das mais importantes soluções de baixo custo disponíveis no mercado. A monografia aqui apresentada, no seu segundo capitulo procura elucidar o leitor sobre a diferença entre paralelismo e concorrência. O terceiro capitulo apresenta alguns problemas e vantagens quando da utilização da computação paralela em sistemas heterogêneos. O capitulo quatro descreve história do PVM, esboçando também uma visão geral da referida tecnologia e considerando as necessidades que as máquinas exigem para executar o software em questão. O capitulo cinco faz uma descrição do sistema PVM, expõe seus objetivos, princípios e apresenta algumas técnicas de programação que podem ser utilizadas. O sexto capitulo traz na sua essência um manual de instalação e funcionamento o simplificado do sistema PVM, incluindo também programas exemplo.
    • 12 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO CAP.II – DIFERENÇAS ENTRE PARALELISMO E CONCORRÊNCIA 2.1. Paralelismo e Concorrência Concorrência existe quando, em um determinado instante, dois ou mais processos começaram a sua execução, mas não terminaram. Por essa definição, concorrência pode ocorrer tanto em sistemas com um único processador, quanto em sistemas com múltiplos processadores. Afirmar que processos estão sendo executados em paralelo implica na existência de mais de um processador, ou seja, paralelismo (ou paralelismo físico) ocorre quando há mais de um processo sendo executado no mesmo intervalo de tempo. Esse tipo de concorrência é demonstrado na Figura 2.1 que mostra a execução de três processos (e1, e2 e e3) em função do tempo. Figura 2.1 - Paralelismo Físico e3 e2 e1 processos t tempo t1
    • 13 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Quando vários processos são executados em um único processador, sendo que somente um deles é executado a cada vez, tem-se um pseudoparalelismo (paralelismo lógico). O usuário tem a falsa impressão de que suas tarefas são executadas em paralelo, mas, na realidade, o processador é compartilhado entre os processos. Isso significa que, em um determinado instante, somente um processo é executado, enquanto que os outros que já foram iniciados aguardam a liberação do processador para continuarem (Figura 2.2). Figura 2.2 - Paralelismo Lógico Baseado nas definições apresentadas acima, é possível definir três tipos de estilo de programação dentro da computação, que são: Programação seqüencial: caracteriza-se pela execução de várias tarefas uma após a outra; Programação concorrente: caracteriza-se pela iniciação de várias tarefas, sem que as anteriores tenham necessariamente terminado (sistemas multi ou uniprocessadores); e3 e2 e1 e2 e3 e1 processos eventos t tempo t1
    • 14 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Programação paralela: caracteriza-se pela iniciação e execução das tarefas em paralelo (sistemas multiprocessadores). Para melhor entender as diferenças entre os três estilos acima, vamos considerar o exemplo abaixo, onde é apresentado um algoritmo para a preparação de um jantar. O cardápio será constituído de carne, salada e sobremesa. Uma tarefa eqüivale ao preparo de cada um dos pratos. Um algoritmo seqüencial seria o seguinte: Abrir refrigerador; Se estiver vazio então vá ao restaurante; senão preparar salada preparar carne preparar sobremesa comer. Percebe-se que no algoritmo acima cada um dos pratos é preparado separado e em seqüência. Esse algoritmo é ineficiente, pois gera desperdício de tempo (por exemplo, enquanto se espera a carne assar). Esse tempo poderia ser aproveitado no início de outra atividade. Esse problema é resolvido pela adoção de um algoritmo concorrente, onde todos os pratos são preparados juntos (concorrentemente). Um algoritmo concorrente é, por exemplo: Abrir refrigerador Se estiver vazio então vá ao restaurante; senão lavar a alface colocar de molho temperar a carne colocar a carne para cozinhar preparar a sobremesa escorrer a alface temperar a alface retirar a carne do forno comer.
    • 15 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Neste caso, as tarefas são executadas concorrentemente, por uma única pessoa (processador). Evita-se assim o tempo ocioso, e os resultados são mais satisfatórios, no sentido que todos os pratos serão servidos logo após o seu preparo. Uma maneira mais eficiente de se executar esse algoritmo, é através do trabalho de duas pessoas (dois processadores). Nesse caso, as tarefas são distribuídas entre as duas pessoas, de maneira que possamos conseguir melhor eficiência (menor tempo) no preparo dos alimentos. Nesse caso, construiremos um algoritmo paralelo real. Fernando: Marina: Abrir refrigerador Abrir refrigerador Se estiver vazioSe estiver vazio então vá ao restaurante; então vá ao restaurante; senão senão temperar a carne preparar a salada preparar a sobremesa colocar carne para assar retirar a carne do forno comer. comer. CAP. III - Computação Paralela em Sistemas Heterogêneos 3.1 Problemas e Vantagens Em uma arquitetura maciçamente paralela, todos os processadores são exatamente iguais em capacidade, recursos, software e velocidade de comunicação. Isso não acontece em uma rede. Os computadores disponíveis em uma rede podem ser de diferentes fabricantes com diferentes compiladores. Portanto, quando se deseja explorar um conjunto de computadores interligados por uma rede, poderá haver vários tipos de heterogeneidade, como por exemplo :
    • 16 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO arquiteturas; formato de dados; potência computacional; carga de trabalho em cada máquina; carga de trabalho na(s) rede(s). O conjunto de computadores disponíveis pode incluir vários tipos arquiteturais tais como: computadores CISC (PC 386/486/pentium), computadores RISC (Sun SPARCstations, DECstation, entre outros), multiprocessadores com memória compartilhada, etc. Cada tipo de arquitetura tem suas próprias características para o desenvolvimento de aplicações. A máquina virtual paralela pode ser composta por computadores paralelos e mesmo que sejam empregados apenas computadores seriais, haverá ainda o problema da incompatibilidade nos códigos binários, sendo preciso compilar uma tarefa paralela em cada máquina diferente. Computadores diferentes freqüentemente possuem formatos de dados incompatíveis. Isso é um ponto importante para os sistemas distribuídos visto que o dados enviados de um computador podem não ser reconhecidos por outro. Há portanto, a necessidade de ambientes de passagem de mensagens que traduzam os formatos de dados incompatíveis, permitindo assim a comunicação. Máquinas com potências computacionais diferentes podem gerar desempenhos fracos. Como exemplo disso pode-se considerar o problema de executar tarefas paralelas em uma máquina virtual, composta por um supercomputador e uma estação de trabalho. O projeto da aplicação deve assegurar que o supercomputador não fique ocioso aguardando o processamento da estação de trabalho para poder continuar. Como sistemas distribuídos normalmente possuem vários usuários, cada um executando suas aplicações, a carga de trabalho atribuída a cada máquina e à(s)
    • 17 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO rede(s) podem variar muito, afetando aplicações que desejam explorar o paralelismo no sistema. Apesar de algumas dificuldades, a computação paralela sobre sistemas distribuídos (e principalmente sobre sistemas heterogêneos) oferece potencialmente muitas vantagens: custo reduzido, devido à utilização do hardware já existente, o qual era empregado apenas para a execução de aplicações seqüenciais; desempenho alto, por atribuir cada tarefa para a arquitetura mais apropriada; explora a heterogeneidade natural de certas aplicações, permitindo acesso a bancos de dados diferentes e a processadores especiais para determinadas partes do problema; os recursos da máquina virtual podem aumentar gradativamente permitindo a assimilação de tecnologias de ponta mais facilmente (com custo menor); utilização de recursos conhecidos para o desenvolvimento de aplicações. Programadores podem utilizar editores, compiladores e periféricos disponíveis para os equipamentos seriais; a computação distribuída pode facilitar o trabalho corporativo. Todos esses fatores têm por objetivo reduzir o tempo de desenvolvimento e de depuração, otimizar a utilização dos recursos, reduzir custos e tornar as aplicações mais eficientes. Esses são os benefícios que todos os ambientes de passagem de mensagens devem explorar. 3.2 Vantagens do PVM As vantagens da utilização do PVM são as seguintes : 4 Redução do tempo de execução das aplicações ; 5 Flexibilidade ;
    • 18 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 6 Software de Domínio Público ; 7 Grande aceitação e utilização ; 8 Altamente portável (grande variedade de arquiteturas) ; 9 Facilidade de instalação e utilização ; 10 Possibilidade das aplicações escolherem quando e onde cada um de seus módulos vão executar ; 11 Fácil definição e modificação da paralela virtual machine ; CAP.IV – O QUE É O PVM 4.1 ARQUITETURA PVM Figura 4.1 Arquitetura PVM
    • 19 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO O processamento paralelo vem sendo encarado como a solução mais viável para aumentar o poder de processamento. As aplicações executadas em paralelo ganham em velocidade, já que vários processadores estão envolvidos na execução da mesma aplicação. Uma característica importante é que ele viabiliza a tolerância à falhas, que em um sistema seqüencial não é possível de se explorar. Quando existem vários processadores e envolvidos em um determinado trabalho se um apresentar problemas, outros podem auxiliar na resolução destes. O mercado atual é dominado pelo Processamento seqüencial, sendo um dos motivos mais visíveis, o custo dos equipamentos necessários para a utilização desta tecnologia. A aquisição de equipamentos para processamento paralelo é bem mais alta, não estando à disposição de usuários comuns. Para possibilitar o contato dos usuários com a programação de alto desempenho, existem softwares que, através de diversas máquinas seqüências conectadas em uma rede, possibilitam a formação de uma grande máquina paralela. Estes softwares abstraem do usuário questões de baixo nível, organizando o equipamento disponível, de forma a tornar visível logicamente uma maquina paralela. A natureza das aplicações geradas por desenvolvedores tem ganhado aumento em complexidade, mantendo o processador mais tempo ocupado e tornando o tempo de resposta mais lento do que se deseja. Devido a isto, diz-se que a melhor solução para obter-se um alto poder de processamento é o processamento paralelo. PVM é um software que possibilita a exploração do paralelismo fazendo com que uma coleção de sistemas computadorizados heterogêneos possam ser vistos como uma única máquina virtual paralela. http://atlas.ucpel.tche.br/~barbosa/sist_dist/pvm/
    • 20 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 4.2 História do PVM Em 1989, no Oak Ridge National Laboratory -ORNL, teve início o projeto PVM. A versão 1.0 foi implementada por Vaidy Sunderam e Al Geist, sendo direcionada ao usos de laboratório. A partir da versão 2.0 (1991), houve a participação de outras instituições (como a University of Tennissee, Carnegie Mellon University, entre outras), quando começou a ser utilizado em muitas aplicações científicas. A versão 2.0 deu início a distribuição gratuita do PVM, o que favoreceu bastante a sua divulgação. Depois de várias revisões (PVM 2.1 - 2.4), o PVM foi completamente reescrito gerando a versão 3.0, em fevereiro de 1993. A versão 3.3 é o resultado de várias mudanças feitas na versão 3.0 com o objetivo de retirar erros de programação e ajustar pequenos detalhes, como oferecer melhor interface para o usuário e aumentar o desempenho de certas comunicações, como em multiprocessadores. Atualmente, a versão 3.4 do PVM se encontra sob desenvolvimento e deverá incluir as seguintes ferramentas: Contexto: Uma maneira de particionar o espaço de comunicação. Uma mensagem enviada em um contexto só pode ser recebida por tarefas no mesmo contexto. Servidor de nomes: Permite que o usuário armazene uma mensagem arbitrária que qualquer tarefa pode recuperar usando um nome associado a ela. Grupos estáticos: O usuário pode declarar um grupo estático permitindo ao PVM armazenar informações do grupo ao nível de tarefas, tornando as comunicações coletivas mais rápidas. Segurança de threads - reprojetar algumas partes internas do PVM para melhorar a segurança de threads
    • 21 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Localização bufferizada - Reduz instruções referente ao monitoramento de eventos Passagem de Mensagem Segura http://atlas.ucpel.tche.br/~barbosa/sist_dist/pvm/ 4.3 Visão Geral PVM é um ambiente de desenvolvimento e execução de aplicações em paralelo que torna transparente toda a distribuição de mensagem, conversão de dados, e tarefas, através de uma rede de independentes arquiteturas. A idéia básica consiste em utilizar um grupo de computadores interconectados e fazer com que estes representem uma máquina virtual. Uma das suas características é a “heterogeneidade”, ou seja, a comunicação entre máquinas é possível apesar de poderem existir diferentes arquiteturas, formatos de dados, velocidade de computação, etc. As arquiteturas suportadas pelo PVM são: família X86 (da Intel) estações de trabalho computadores multiprocessadores. Um possível problema pode ser a incompatibilidade entre formato de dados que necessitam ser trocados; para isto, utiliza-se o pacote “message-passing”, que se encarrega de verificar se os dados trocados são compreendidos pelos `nós' envolvidos. O modelo de computação do PVM é muito simples e acomoda uma grande variedade de aplicações de estruturas de programas. O usuário escreve a sua aplicação como uma coleção de tarefas cooperativas, sendo que estas acessam os recursos do PVM através de uma biblioteca de rotinas ou primitivas. Estas rotinas permitem a inicialização e o término das tarefas da rede, bem como a comunicação e a sincronização entre elas. Cada computador pode apenas endereçar a sua memória e a comunicação entre
    • 22 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO eles se dá através da troca de mensagens: para efetuar uma troca de dados é necessário acessá-los na memória de cada processador e obter as informações que nos permitem saber o destino e a forma como os dados serão transmitidos. A comunicação de dados é feita através do controle da troca de mensagens entre os processadores. A comunicação e a sincronização entre os processadores é controlada pelo próprio PVM, garantindo, desta forma, a confiabilidade na entrega das mensagens. As tarefas podem possuir estruturas arbitrárias do controle e de dependência, ou seja, em algum ponto na execução de uma aplicação simultânea, qualquer tarefa em execução pode começar ou parar outras tarefas ou adicionar ou retirar computadores da máquina virtual. Qualquer processo pode comunicar-se e/ou sincronizar-se com qualquer outro. Qualquer controle específico e estrutura de dependência pode ser executada sob o sistema de PVM através do uso apropriado de construções. Devido a sua portabilidade para diversas plataformas e também por causa de sua relação de programação simples mas completa, o sistema PVM ganhou aceitação difundida na comunidade científica de alto desempenho. 4.4 O que as máquinas precisam para rodar PVM? A plataforma mais comum de PVM é uma máquina Unix, mas atualmente ele pode ser encontrado para mais de 30 plataformas. As portas especiais do PVM para processadores de passagem estão incluídos com a distribuição do Netlib. Estes incluem o iPSC/860, iPSC/2 e Paragon e TMC CM-5. Portas de memória compartilhada são também incluídas para uso em System-5 de memória compartilhada para comunicação e funcionamento em Sun, Sgi, Dec, Kendall Square, Sequent e Máquinas IBM. As portas existem com exceção da distribuição de Netlib para o cray T-3d,
    • 23 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Parsytech e outras máquinas. Existem portas feitas também para VMS e OS/2. A tabela abaixo mostra alguns dos vários equipamentos que podem ser utilizados pela versão 3.3 do PVM. Alliant FX/8 DEC Alpha Bbn Butterfly TC2000 80386/486/Pentium com UNIX (Linux ou BSD) Thinking Machines CM2 CM5 Convex C-series C-90. Ymp, Cray-2, Cray S-MP HP-9000 modelo 300, HP-9000 PA-RISC Intel iPSC/860, Intel iPSC/2 386 host Inter Paragon DECstation 3100, 5100 IBM/RS6000, IBM RT Silicon Graphics Sun 3, Sun 4, SPARCstation, Sparc multiprocessor DEV Micro VAX Windows 32 bits 4.5 Linguagens PVM é independente de uma linguagem particular: os programas podem ser escritos em uma ou mais linguagens. As bibliotecas para C, C++ e Fortran são fornecidas com a distribuição. Ele pode ser usado ainda com outras linguagens, como Lisp. O sistema PVM permite que sejam escritas aplicações nas linguagens Fortram, C e C++, devido ao fato de a maioria das aplicações passíveis de paralelização estavam escritas nessas linguagens. Tabela 4.1 - Equipamentos que podem ser utilizados pelo PVM
    • 24 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO CAP. V – O SISTEMA PVM Figura 5.1 Sistema PVM
    • 25 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 5.1 Descrição do sistema PVM PVM (máquina virtual paralela) é um subprojeto de um projeto em andamento sobre computação em redes heterogêneas. Os objetivos gerais deste projeto são investigar, e desenvolver soluções para computação heterogênea simultânea. PVM é uma integração de ferramentas e de bibliotecas de software que emulam uma estrutura com um propósito geral: permitir que computadores interligados, em uma ou mais redes, sejam usados cooperativamente para a computação simultânea ou paralela. O sistema de PVM é composto de duas partes. A primeira parte é um daemon , chamado pvmd3 ( às vezes abreviado para pvmd) , que reside em todos os computadores que fazem parte da máquina virtual. Um programa daemon é SPMDSPMD Entrada e Particionamento Computador 2Computador 1 Saída dos Dados MPP Ponte/ Roteador Grupo1 Grupo2 Grupo3 PVM: Visão Uniforme de uma Máquina Virtual Multiprogramada (a) (b) Figura 5.2 -Sistema PVM. (a) Modelo computacional e (b) visão arquitetural
    • 26 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO aquele permanentemente ativo em um sistema, aguardando instruções externas para disparar ações específicas. Pvmd3 é determinado para usuários com permissão de instalação do daemon na máquina; quando um usuário deseja “rodar” uma aplicação de PVM, primeiramente ele deve criar uma máquina virtual iniciando o PVM. A aplicação de PVM pode então ser iniciada através do Unix em um dos hosts. Múltiplos usuários podem configurar máquinas virtuais (utilizando overlapping), e cada usuário pode executar diversas aplicações de PVM simultaneamente. A segunda parte do sistema é uma biblioteca de rotinas de interface. Esta biblioteca contém um repertório de funcionalidades completo dos comando básicos necessários para a cooperação entre tarefas de uma aplicação. Esta biblioteca contêm ainda funções de mais baixo nível, que permitem estabelecer diretamente a passagem de mensagens, “spawning'' e modificação da máquina virtual. O modelo computacional do de PVM é baseado na teoria de que uma aplicação é formada por diversas tarefas. Cada tarefa é responsável para uma parte do trabalho computacional da aplicação. Às vezes uma aplicação é interrompida ao longo de suas funções; isto é, cada tarefa executa uma função diferente, por exemplo, entrada, problema de instalação, solução, saída, e exposição. Este processo é chamado freqüentemente de paralelismo funcional . Um método mais comum de paralisação em uma aplicação é chamado de paralelismo dos dados . Neste método todas as tarefas são as mesmas, mas cada uma pode resolver uma parte pequena dos dados. 5.2 Princípios a. Usuário configura a estrutura As tarefas computacionais da aplicação são executadas em um conjunto de
    • 27 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO máquinas selecionadas pelo usuário para o funcionamento do PVM. As máquinas com uma única CPU e com vários processadores (inclusive memória distribuída) podem fazer parte do pool do host. O pool do host pode ser alterado adicionando- se ou retirando-se máquinas a qualquer momento. b. Acesso transparente ao hardware As aplicações tem a possibilidade de optar por utilizar o hardware como um recurso não identificado, ou explorar as capacidades de uma máquina específica, posicionando determinado tarefa computacional no computador mais apropriado. c. Computação baseada em processos A unidade do paralelismo é uma que pode ou não coincidir com um processo e ser relacionada com comunicação ou com processamento. Nenhum mapeamento processo-à-processador é adotado: pode, por exemplo, acontecer de múltiplas tarefas serem executadas em um único processador. d. Modelo de passagem de mensagens explícito Os daemons e as tarefas PVM podem compor e enviar mensagens de tamanho arbitrário contendo diferentes tipos de dados. O dado pode ser convertido usando XDR quando é enviado para hosts que possuem formatos de dados compatíveis. As mensagens são etiquetadas com um número inteiro de código definido pelo usuário e são selecionadas para serem recebidas por endereço ou etiqueta. O remetente de uma mensagem não espera o reconhecimento do destinatário, mas continua tão breve a mensagem tenha sido entregue a rede e a mensagem armazenada no buffer pode ser simplesmente
    • 28 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO apagada ou reutilizada. Primitivas de recepção com ou sem bloqueio são oferecidas, então uma tarefa pode esperar por uma mensagem sem consumir tempo de processamento. Para o usuário PVM, a comunicação empregada utiliza send bloqueante assíncrono, receive bloqueante assíncrono, receive não bloqueante e receive com time-out. O send é chamado de bloqueante porque retorna tão logo o buffer utilizado para enviar a mensagem esteja livre para ser novamente utilizado e é chamado de assíncrono porque não depende do receptor executar um receive para poder retornar. O send só bloqueia quando a mensagem exceder o tamanho do buffer e precisar ser dividida. Nesse caso o send fica bloqueado até o receptor executar um receive e liberar o buffer para continuar o envio da mensagem. Um recive é não bloqueante quando ele retorna imediatamente após ter verificado o buffer no host receptor. No caso da mensagem não estar disponível, é retornado um código indicando que o buffer não possui a mensagem. Um receive bloqueante não retorna enquanto a mensagem não for recebida e inserida no buffer. O receive com time-out fica bloqueado apenas durante um determinado espaço de tempo. O PVM oferece comunicação ponto-a-ponto, broadcasting (para um grupo de tarefas definido pelo usuário) e multicasting (para um conjunto de tarefas). O PVM possui mensagens dinâmicas (podem aumentar seu tamanho conforme a necessidade).As funções de “empacotamento” utilizam blocos de memória de acordo com o tamanho da mensagem a ser enviada. Esses blocos são chamados de databufs e utilizam os descritores de fragmentos de mensagem para uni-los, formando assim uma mensagem. No início de cada databuf é reservado um espaço para o cabeçalho de cada fragmento e da mensagem, bem como um contador. Isto tem por objetivo evitar a duplicação desnecessária dos dados. Quando o contador possui valor zero o
    • 29 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO databuf pode ser eliminado da memória. Essa estratégia é bastante empregada nas comunicações multicast. 8 bytes 16 bytes 16 bytes 4064 bytes DadosCab. Mens. Cab. Frag. Contador fr_buf fr_dat Figura 5.3 - databuf O tamanho de cada databuf é configurado em tempo de compilação e pode ser alterado dinamicamente. e. Heterogeneidade Como referido anteriormente, o PVM suporta simultâneamente diferentes tipos de máquinas, redes e aplicações. Devido à necessidade de seus usuários executarem aplicações específicas, o PVM foi também adaptado para as máquinas com multiprocessadores. Baseando-se em sua portabilidade, o PVM foi reconfigurado e como resultado final, as aplicações desenvolvidas para as estações de trabalho puderam executar em computadores com MPP. A máquina virtual esconde os detalhes de configuração do usuário. Os processadores físicos podem ser uma rede de estações de trabalho ou nós de um computador com multiprocessadores. É responsabilidade do PVM estabelecer quais tarefas irão executar em cada processador. Entretanto há a possibilidade de se especificar uma configuração desejada para determinadas tarefas, onde o objetivo é atingir o máximo de desempenho possível mesmo com o custo imposto pela portabilidade.
    • 30 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 5.3 Protocolos A comunicação realizada pelo PVM é baseada em TCP, UDP e sockets de domínio UNIX, assumindo portanto que todos os hosts pertencentes a máquina virtual sejam capazes de conectarem-se através desses mecanismos de comunicação. Uma abordagem que está sendo investigada é habilitar as operações do PVM diretamente na camada de enlace de dados, ao invés de utilizar a camada de transporte. Protótipos do PVM que operam com essa mudança tem sido desenvolvidos e a melhoria no tempo de latência tem sido de aproximadamente 50%. A comunicação no PVM é feita entre os Pvmds e as tarefas, portanto há três conexões: entre Pvmds, entre um Pvmd e suas tarefas e entre tarefas. Figura 5.5 – Modelo de comunicação realizada no PVM
    • 31 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO A comunicação entre Pvmds é feita através de UDP. Como UDP não é um protocolo confiável, o PVM implementa serviços de confirmação e retransmissão das mensagens. O UDP limita o tamanho de cada pacote, ocorrendo então uma divisão das mensagens em pacotes. O TCP não foi utilizado por três motivos principais: o primeiro é a “escalabilidade”, o segundo é tempo extra gasto para fazer as conexões necessárias com TCP. O cabeçalho de cada pacote utilizado nas comunicações entre Pvmds é representado na figura 5.6. Os campos destino e origem contém os respectivos TIDs envolvidos na comunicação. Cada um dos campos descritos a seguir contém apenas um bit SOM e EOM indicam primeiro e o último pacote respectivamente da mensagem. DAT indica que o pacote contém dados e que o número de sequência é válido. ACK indica que o pacote possui um número de confirmação válido. FIN indica que a conexão do Pvmd esta sendo desfeita. Quando FIN está com seu bit com o valor 1 e DAT com valor 0, significa que o host será eliminado da máquina virtual. Byte 0 1 2 3 0 TID do Destino 4 TID da Origem 8 Número de Sequência Número de Confirmação 12 AC K FIN DAT EOM SOM Não utilizado Figura 5.6 -Cabeçalho do Pacote Pvmd-Pvmd A comunicação entre Pvmd e sua tarefas e entre tarefas é feita com TCP, devido principalmente ao fator confiabilidade. UDP necessita de confirmações extras, retransmissões. A figura 5.7 mostra o cabeçalho utilizado em todos os pacotes Pvmd-tarefa ou tarefa-tarefa. Não há a presença dos números de sequência e de confirmação. Em substituição há um campo indicando o tamanho do pacote que está sendo
    • 32 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO enviado. Somente dois flags (EOM e SOM) são utilizados para indicar o primeiro e o último pacote da mensagem respectivamente. Byte 0 1 2 3 0 TID do Destino 4 TID da Origem 8 Tamanho do Pacote 12 EOM SOM Não utilizado Figura 5.7 - Cabeçalho do Pacote Pvmd-Tarefa e Tarefa-Tarefa 5.4 Técnicas de Programação http://www.inf.pucpcaldas.br/~morselli/pesquisa/compparal.htm Existem duas técnicas básicas de construção de aplicações paralelas: MIMD e SPMD. MIMD (Multiple-Instruction Multiple-Data) é uma técnica baseada em arquiteturas cliente-servidor enquanto SPMD (Simple-Program Multiple-Data) é a técnica que admite um único programa snedo executado em todos os pontos da rede. A utilização de uma determinada tecnologia depende da aplicação que se pretende: programas SPMD são eficientes quando a mesma parte do trabalho computacional pode ser paralelizado por todos os processadores simultaneamente. Devido a esta constante sincronização, se uma parte do código destinar-se por um processador específico, todos os outros terão de aguardar que este termine. Em MIMD, diferentes processadores poderão estar trabalhando em tarefas diferentes. O PVM permite ainda, híbridos destes dois tipos de sistemas.
    • 33 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO  MIMD Nesta técnica temos vários blocos de instruções sendo simultaneamente aplicados a diferentes conjuntos de dados. Neste tipo de arquitetura, as diferentes tarefas podem ser aplicadas com prioridade e desempenhos diferentes. É necessário ter diferente código fonte para o servidor e para o cliente. Figura 5.8 - Arquitetura MIMD. Representação do fluxo de instruções e dados de uma máquina com arquitetura MIMD.
    • 34 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO  SPMD Num sistema SPMD temos processos homogêneos e sincronizados, executando as mesmas instruções sobre a sua própria região de dados. Figura 5.9 - Arquitetura SPMD. Representação do fluxo de instruções e dados de uma máquina com arquitetura SPMD.
    • 35 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 5.5 Máquina Virtual Para tratar um conjunto de máquinas interligadas por uma rede como um grande computadores multiprocessado virtual, o PVM roda um programa daemon chamado pvmd em cada uma das máquinas componentes da MV (Máquina Virtual). Toda a comunicação entre duas máquinas da MV passam pelos processos pvmd que rodam nas máquinas em questão. Por exemplo, se um processo de uma máquina A quer mandar uma mensagem para um processo na máquina B, esta mensagem será enviada para o pvmd da máquina A, passará para o pvmd da máquina B e só então será repassada para o processo destino na máquinaB. Montar uma MV no PVM significa iniciar um pvmd em cada uma das máquinas que queremos presente na MV. O primeiro pvmd que é iniciado numa MV funciona como mestre e é o único capaz de reconfigurar a MV como acrescentar ou remover máquinas. A partir do pvmd mestre, os demais pvmds são iniciados com status de escravos. Pedidos de reconfiguração da MV vindos de processos cujo pvmd local seja um pvmd escravo são repassados ao pvmd mestre e executados de lá. Existem duas maneiras de montar uma máquina virtual, através de um programa feito pelo usuário ou usando o console do PVM, um programa chamado pvm que vem junto com a distribuição do PVM. Descreveremos inicialmente o uso do console do PVM e mais para frente discutiremos como controlar a configuração da MV além de passar mensagens e gerenciar tarefas PVM no modo programado.
    • 36 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO CAP. VI – MANUAL DE INSTALAÇÃO E FUNCIONAMENTO 6.1 Configurando o Ambiente Para iniciar a utilização do PVM o usuário deve primeiro, acrescentar algumas linhas ao seu arquivo .profile (usando o editor pico, por exemplo). Elas devem ser incluidas para preparar o ambiente para a execução do PVM. São elas : Incluir no PATH=/usr/local/etc/pvm3/lib export PVM_ROOT=<dir_pvm3> onde <dir_pvm3> = diretório onde esta o pvm3 export PVM_ARCH=<type_host> onde <type_host>=indica a arquitetura da máquina e quais executáveis para procurar no diretório PVM_ROOT. Veja a tabela de arquiteturas : Algumas máquinas suportadas pelo PVM e seus respectivos códigos para a variável PVM_ARCH : PVM_ARCH Equipamento Notas RSK6 IBM/RS6000 AIX 4.1 SP2MPI IBM-SP2 AIX 4.1 LINUX 80386/486 PC running Unix LINUX U370 IBM 370 AIX IPSC2 Intel IPSC/2 386 host Sys V Tabela 4.2 - Máquinas suportadas pelo PVM e códigos para a variável PVM_ARCH A seguir, deve-se criar o arquivo .rhosts, com a lista de todos os hosts que serão usados. Uma vez preparado o ambiente, o usuario pode iniciar o pvm. Para isso basta digitar : 'pvm'
    • 37 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 6.2 Comandos Abaixo serão listados comandos e funções utilizados no PVM: · pvm_exit() – É a última função a ser chamada por um programa PVM. Ele informa ao pvmd local que o processo está se desligando da máquina virtual. A boa praxe de programação PVM exige que um programa comece com pvm_mytid() e termine em pvm_exit(). · pvm_spawn() – É usado para iniciar novas tarefas na MV. No modelo de programação mestre/escravo, esta função é usada no programa mestre para lançar processos escravos para as máquinas constituintes da MV. · pvm_kill() – Tem por objetivo forçar o término da execução de algum processo PVM rodando na MV. Pode ser usada por um programa mestre para encerrar a execução de escravos trabalhando em soluções numéricas que não estão convergindo. · pvm_addhosts()/pvm_delhosts() – Estas funções acrescentam e removem máquinas físicas da MV do PVM. 6.3 Funções 6.3.1 Funções de Informação O gerenciamento de tarefas concorrentes em uma aplicação muitas vezes necessita da aquisição de informações adicionais sobre o estado da MV incluindo identificadores de outros processos, nome da máquina no qual uma tarefa está executando e outras informações. Algumas rotinas de obtenção destas informações no PVM seguem: · pvm_parent() – Função útil em processos escravos. Esta função retorna o identificador do processo que iniciou o processo atual. Este identificador será necessário se o escravo desejar trocar mensagens com o programa mestre.
    • 38 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO · pvm_perror() – Esta função imprime para a saída padrão uma mensagem indicando o tipo de erro retornado por uma função PVM. Valores de retorno menores que 0 indicam um erro na função. · pvm_config() – As informações retornadas por esta função são úteis para detectar falhas em máquinas e tarefas da MV. Por exemplo, para saber se alguma máquina da MV foi desligada ou desconectada da rede. 6.3.2 Funções de Gerenciamento de Buffers Os chamados buffers são regiões de memória destinados a armazenar mensagens que serão enviados para outras tarefas ou recebidas delas. Toda comunicação entre tarefas envolve o uso de buffers. A memória ocupada por um buffer de envio ou recebimento deve ser inicializada antes de ser usada e as funções abaixo tem este propósito. · pvm_initsend() – Deve ser invocada ao menos uma vez no programa, define a codificação a ser usada na transmissão de dados. Uma discussão sobre codificação de dados se encontra na seção Funções de Envio de Dados a seguir, mas as opções são: codificação XDR e sem codificação. · pvm_mkbuf() – Cria um novo buffer de dados. · pvm_freebuf() – Libera a memória alocada para o buffer. 6.3.3 Funções de Envio de Dados A funcionalidade do PVM é construída sobre um conjunto de diretivas de troca de mensagens. As aplicações PVM funcionam trocando informações que são empacotadas em mensagens. Cada mensagem possui um identificador de tipo, uma codificação e os dados. Os identificadores de tipo de mensagem podem ser usados para implementar prioridades de recebimento das mensagens.
    • 39 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Mensagens com dados marcados "urgentes" podem ser processados antes que outras mensagens com outros tipos. A codificação é importante em ambientes heterogêneos, onde cada processador pode ter convenções próprias para a representação interna dos dados. Um exemplo clássico das diferenças que podem surgir é a representação interna de um número inteiro nas plataformas Intel x86 e Sun SPARC. A Intel costuma armazenar seus números inteiros da direita para a esquerda seguindo a convenção "little endian" enquanto a Sun armazena números inteiros da esquerda para a direita, convenção conhecida como "big endian". Quando se quer que dois ou mais computadores de arquiteturas distintas (como Intel e Sun SPARC) se comuniquem, é necessário converter os dados para um formato intermediário que todas as plataformas conheçam, assim, só é necessário que cada computador saiba converter os dados de e para este formato intermediário e sua própria representação interna. O PVM adota a codificação XDR (External Data Representation), um padrão criado pela Sun, para implementar a transparência de arquitetura em suas mensagens. Quando a MV contém apenas máquinas de uma mesma arquitetura, é possível não codificar os dados o que implica em alguma economia de tempo na transmissão das mensagens uma vez que a codificação XDR sacrifica um pouco de espaço de armazenamento em favor da portabilidade. As principais funções de envio de dados são: · pvm_send() - Envia os dados armazenados em um buffer de envio para uma dada tarefa. · pvm_mcast() - Envia os dados armazenados em um buffer de envio para um conjunto de tarefas (multicast). · pvm_pk??() - Este na verdade é um conjunto de funções de empacotamento (codificação + armazenamento) de dados em um buffer de envio. A função para
    • 40 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO empacotar um inteiro para transmissão se chama pvm_pkint() e assim por diante. Consulte a man page pvm_pk para saber todas as opções. 6.3.4 Funções de Recepção de Dados Estas funções tem funcionamento inverso às funções de envio de dados. São elas: · pvm_recv() - Recebe uma mensagem enviada por outro processo e a coloca no buffer de recebimento.Caso não existam mensagens a ser recebidas, o processo fica bloqueado até que uma mensagem para recepção. · pvm_nrecv() - Análoga à função anterior com a diferença que a função retorna um erro ao invés de bloquear o processo se não existirem mensagens para serem recebidas. · pvm_upk??() - Estas funções são análogas às funções pvm_pk??(). Servem para desempacotar (decodificar + retirar do buffer) os dados armazenados no buffer de recebimento. Para desempacotar um inteiro use a função pvm_upkint() e assim por diante. Uma descrição de todas as opções de desempacotamento está na man page pvm_upk. 6.4 Executando uma aplicação no PVM Existem duas formas de executar uma aplicação no PVM. A partir da console, ou na própria linha de comando. Entretanto, existem alguns passos que o usuário deve seguir antes de executar a aplicação : 1. Certifique-se que o PVM esteja funcionando ;
    • 41 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO 2. Coloque o aplicativo no diretório ~/pvm3/bin/RS6K, no caso de utilizar a arquitetura RS6K ou no diretório ~/pvm3/bin/SP2MPI, caso esteja utilizando a arquitetura SP2MPI ; Executando a partir da console : Para executar uma aplicação a partir da console PVM, siga os seguites passos : 1. Entre na console PVM, digitando "pvm" 2. Digite "spawn <nome_da_aplicação>" 3. Verifique o resultado Executando a partir da linha de comando: Para executar uma aplicação a partir da linha de comando, siga os seguintes passos : 1. Certifique-se que o PVM esteja funcionando, digitando pvm 2. Saia da console, digitando "quit" 3. Digite o nome da aplicação na linha de comando do UNIX Obs.: A janela do terminal do usuario (telnet) ficará bloqueado enquanto a aplicação estiver funcionando. Para evitar isso, o usuário deve digitar "<nome_da_aplicação> &". Neste caso, a aplicação executará em BackGround, permitindo ao usuário executar outras tarefas. Entretando, se o usuário fechar sua janela de terminal, sua aplicação será interrompida. Para solucionar esse problema, não feche a janela durante a execução da aplicação ou veja Executando em BackGround. 6.5 Algumas Dicas de Compilação de Programas PVM Todo programa escrito na linguagem C do PVM deve incluir a linha #include "pvm3.h" no início do programa. Equivalentemente, programas PVM escritos em FORTRAN devem incluir a linha #include "fpvm3.h" em seu início.
    • 42 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Esses arquivos contém as definições das diversas funções do PVM e informam ao compilador como fazer a verificação de tipos e sintaxe das chamadas PVM. Se o arquivo pvm3.h (ou fpvm3.h) não estiver no diretório onde seu programa fonte se localiza, é preciso substituir o nome do arquivo pelo seu caminho completo ou informar ao compilador onde localizá-lo. Uma dica interessante é criar um link simbólico no diretório corrente para o arquivo de cabeçalho. Por exemplo, supondo que o arquivo de cabeçalho pvm3.h se localize em /usr/local/pvm3/include/pvm3.h, o comando para criar o link simbólico seria: ln -s /usr/local/pvm3/include/pvm3.h ./pvm3.h Ao compilar programas PVM, não esqueça de incluir na linha de comando do compilador a biblioteca do PVM para que o código referente às funções PVM utilizadas no seu programa sejam incluídos no seu executável. Um exemplo de compilação de um programa PVM poderia ser: gcc -o hello_master hello_master.c -lpvm3 Dependendo de como está sua instalação do PVM, pode ser necessário informar ao compilador onde procurar as bibliotecas do PVM. Compiladores C/C++ costumam usar a opção -L para especificar este diretório. Outra possibilidade é acrescentar o diretório apropriado na variável de ambiente LD_LIBRARY_PATH. Verifique o manual do seu compilador para estudar a melhor maneira de informar seu compilador da localização tanto do arquivo de cabeçalho quanto das bibliotecas do PVM. 6.6 Balanceamento de Carga Uma importante questão na programação de uma aplicação PVM é a melhor maneira de distribuir os processos entre as máquinas que compõem a MV do PVM.
    • 43 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Esta distribuição de carga depende de diversos fatores como a homogeneidade dos grãos de paralelização obtidos na fase de decomposição do problema, a velocidade e performance das máquinas presentes na MV e o perfil de carga de cada máquina no decorrer do tempo dado que outros usuários podem usá-las. Uma abordagem simples para o problema é a alocação estática de recursos. Nesta abordagem, o usuário elabora alguma heurística de alocação de tarefas que busca balancear a carga entre as máquinas presentes levando em conta os fatores acima. A grande vantagem deste método é sua facilidade de projeto/implementação. Pode ser a solução adotada para problemas cuja solução não seja crítica ao funcionamento de um sistema e tudo que se quer é obter um speedup utilizando capacidade ociosa da rede atual. Este método é pouco adaptável a mudanças de configuração da rede ou do seu perfil de uso e apresenta melhores resultados em redes de comportamento bastante previsível. O outro extremo do balanceamento de carga é monitorar a carga em todas as máquinas da rede determinando qual máquina é mais indicada para o lançamento de novos processos. Uma monitoração eficiente deve levar em conta um histórico recente de utilização da máquina (1, 2, 5, a 10 minutos no passado) juntamente com dados estatísticos de utilização em períodos maiores (perfis de uso semanal e mensal). Este método é difícil de implementar pois não existe uma forma portável de se monitorar o desempenho instantâneo (ou quase instantâneo) das máquinas de modo que qualquer solução pode precisar de adaptações ao ser transferido para outras redes. Além disso, existe uma complexidade de gerar modelos ótimos de balanceamento de carga e o tráfego das informações de monitoramento podem impor uma carga adicional nos nós e nos meios de transmissão da rede. Soluções eficientes e de implementação mais fácil são obtidos fazendo um compromisso entre a eficiência e a adaptabilidade. Estas soluções híbridas
    • 44 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO misturam lados positivos de ambos os métodos buscando uma melhor adaptação para o problema sendo resolvido. 6.7 Interface Gráfica: XPVM O PVM é um console e um monitor gráfico para PVM. Através dele obtemos uma interface gráfica que facilita a utilização dos comandos e das informações apresentadas no console do PVM. Apresenta ainda um monitor gráfico para controlar a execução de programas PVM. Desta forma consegue-se informações sobre as interações entre tarefas em um programa paralelo, ajustar o desempenho e eliminar possíveis erros. 6.8 Exemplos de Programas PVM Um Programa PVM - O Mestre main() { int cc, tid, msgtag; char buf[100]; printf("i'm t%xn", pvm_mytid()); cc = pvm_spawn("hello_other", (char**)0, 0, "", 1, &tid); if (cc == 1) { msgtag = 1; pvm_recv(tid, msgtag); pvm_upkstr(buf); printf("from t%x: %sn", tid, buf); } else printf("can't start hello_othern"); pvm_exit();
    • 45 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO } Um Programa PVM - O Escravo #include "pvm3.h" main() { int ptid, msgtag; char buf[100]; ptid = pvm_parent(); strcpy(buf, "hello, world from "); gethostname(buf + strlen(buf), 64); msgtag = 1; pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, msgtag); pvm_exit(); } Um Programa PVM - Mesmo Fonte #include <stdlib.h> #include <stdio.h> #include <pvm3.h> void main() { int mytid, parent; mytid = pvm_mytid(); parent = pvm_parent();; if (parent == PvmNoParent) master(); else slave(); } void master(){ int tids[3], numt; pvm_catchout(stdout); numt = pvm_spawn("bobao", NULL, PvmTaskDefault,
    • 46 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO "", 3, tids); printf("Abriu %d processosn", numt); if (numt < 0) printf("Nao abriu os processosn"); else printf("Eu sou o mestre.n"); pvm_exit(); } void slave(){ int mytid; mytid = pvm_mytid(); printf("Eu sou o escravo %dn", mytid); } Iniciando PVM O console inicia o PVM caso seja necessário. pvm> conf 1 host, 1 data format HOST DTID ARCH SPEED primata 40000 LINUX 1000 pvm> add ipanema 1 successful HOST DTID ipanema 80000 pvm> add joa 0 successful HOST DTID joa Can't start pvmd pvm> conf 2 hosts, 2 data formats HOST DTID ARCH SPEED primata 40000 LINUX 1000 ipanema 80000 SUN4 1000 pvm> Ponteiro para um array de estruturas pvmhostinfo.
    • 47 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Exemplo de pvm_conf #include <stdio.h> #include "pvm3.h" main() { struct pvmhostinfo*hostp; int nhost, narch, info, i; info= pvm_config(&nhost,&narch,&hostp); if( info==PvmSysErr ) printf("Pvm not responding"); else{ printf("Hosts na maquina virtual.t%dn",nhost); printf("Formatos de dados em uso.t%dnn", narch); printf("Hosts em operacaon"); printf("NomettArquiteturattVelocidaden"); for(i= 0;i<nhost;i++) printf("%stt%sttt%dn", hostp[i].hi_name, hostp[i].hi_arch, hostp[i].hi_speed); printf("n"); } } CAP. VII – Conclusão Em programação paralela, como em outras atividades de planejamento, a meta do projeto não é otimizar uma única métrica, tal como a velocidade. Um bom projeto deve otimizar funções de problemas específicos, exigência de memória, custo de implementação e custo de manutenção. Desde modo, a otimização do projeto envolve a diferença entre a simplicidade, performance, portabilidade, escalabilidade e outros fatores. O PVM destaca-se por ser considerado por muitos autores um padrão de fato para plataformas de portabilidade.
    • 48 Av.Invernada,595-VeraCruz-Cep:13.271-450-Valinhos/SP-(19)3869-5833 www.fav.brwww.vestibulares.br FACULDADESDEVALINHOS FACULDADEDECIÊNCIASADMINISTRATIVASDEVALINHOS FACULDADEDEADMINISTRAÇÃOENEGÓCIOSDEVALINHOS FACULDADEDEDIREITODEVALINHOS-INSTITUTOSUPERIORDEEDUCAÇÃO Se uma aplicação se destinar a ser desenvolvida e executada numa única arquitetura (e esta suportar LAM), é quase unânime que esta é o melhor forma de realizar a comunicação entre processadores. Devido ao PVM ser conceitualizado como uma máquina virtual, permite uma maior interoperabilidade, e conseqüente facilidade de interação entre diferentes arquiteturas e linguagens. Referências Bibliográficas http://www.lia.ufc.br/~alinson/pvm2.html http://www.icmc.sc.usp.br/ensino/material/index.html http://www.icmc.sc.usp.br/ensino/material/index.html http://lasdpc.icmc.sc.usp.br/pesquisa/pvmw95.html http://www.uerj.br/~wwwsp2/pvm.htm http://www.dep.fem.unicamp.br/~sergio/Welcome.html http://www.joinville.udesc.br/departamentos/dcc/professores/claudio/cursos/prog_paralela/ guia_pvm/guia_pvm.html http://www.epm.ornl.gov/pvm/pvm_home.html http://www.inf.ufrgs.br/procpar/tools/README-II-PVM.html