parallevirtualmachine monografia

48
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

Upload: selingardi

Post on 09-Jul-2015

96 views

Category:

Technology


0 download

DESCRIPTION

monografia faculdade de ciencia da computação

TRANSCRIPT

Page 1: Parallevirtualmachine monografia

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

Page 2: Parallevirtualmachine monografia

2

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 3: Parallevirtualmachine monografia

3

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃO

© Copyright 2003 por Francisco Selingardi Todos os Direitos Reservados

Page 4: Parallevirtualmachine monografia

4

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 5: Parallevirtualmachine monografia

5

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 6: Parallevirtualmachine monografia

6

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 7: Parallevirtualmachine monografia

7

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 8: Parallevirtualmachine monografia

8

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 9: Parallevirtualmachine monografia

9

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 10: Parallevirtualmachine monografia

10

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃO

Page 11: Parallevirtualmachine monografia

11

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 12: Parallevirtualmachine monografia

12

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

tempot1

Page 13: Parallevirtualmachine monografia

13

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

tempot1

Page 14: Parallevirtualmachine monografia

14

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 15: Parallevirtualmachine monografia

15

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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 vazio Se 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 :

Page 16: Parallevirtualmachine monografia

16

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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)

Page 17: Parallevirtualmachine monografia

17

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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 ;

Page 18: Parallevirtualmachine monografia

18

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 19: Parallevirtualmachine monografia

19

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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/

Page 20: Parallevirtualmachine monografia

20

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 21: Parallevirtualmachine monografia

21

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 22: Parallevirtualmachine monografia

22

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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,

Page 23: Parallevirtualmachine monografia

23

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 24: Parallevirtualmachine monografia

24

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃO

CAP. V – O SISTEMA PVM

Figura 5.1 Sistema PVM

Page 25: Parallevirtualmachine monografia

25

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 26: Parallevirtualmachine monografia

26

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 27: Parallevirtualmachine monografia

27

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 28: Parallevirtualmachine monografia

28

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 29: Parallevirtualmachine monografia

29

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 30: Parallevirtualmachine monografia

30

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 31: Parallevirtualmachine monografia

31

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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 ACK

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

Page 32: Parallevirtualmachine monografia

32

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 33: Parallevirtualmachine monografia

33

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 34: Parallevirtualmachine monografia

34

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 35: Parallevirtualmachine monografia

35

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 36: Parallevirtualmachine monografia

36

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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'

Page 37: Parallevirtualmachine monografia

37

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 38: Parallevirtualmachine monografia

38

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 39: Parallevirtualmachine monografia

39

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 40: Parallevirtualmachine monografia

40

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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 ;

Page 41: Parallevirtualmachine monografia

41

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 42: Parallevirtualmachine monografia

42

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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.

Page 43: Parallevirtualmachine monografia

43

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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

Page 44: Parallevirtualmachine monografia

44

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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%x\n", 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: %s\n", tid, buf); } else printf("can't start hello_other\n"); pvm_exit();

Page 45: Parallevirtualmachine monografia

45

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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,

Page 46: Parallevirtualmachine monografia

46

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃO

"", 3, tids); printf("Abriu %d processos\n", numt); if (numt < 0) printf("Nao abriu os processos\n"); else printf("Eu sou o mestre.\n"); pvm_exit(); } void slave(){ int mytid; mytid = pvm_mytid(); printf("Eu sou o escravo %d\n", 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.

Page 47: Parallevirtualmachine monografia

47

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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%d\n",nhost); printf("Formatos de dados em uso.\t%d\n\n", narch); printf("Hosts em operacao\n"); printf("Nome\t\tArquitetura\t\tVelocidade\n"); for(i= 0;i<nhost;i++) printf("%s\t\t%s\t\t\t%d\n", 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.

Page 48: Parallevirtualmachine monografia

48

Av. Invernada, 595 - Vera Cruz - Cep: 13.271-450 - Valinhos/SP - (19) 3869 - 5833

www.fav.br www.vestibulares.br

FACULDADES DE VALINHOS

FACULDADE DE CIÊNCIAS ADMINISTRATIVAS DE VALINHOS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE VALINHOSFACULDADE DE DIREITO DE VALINHOS - INSTITUTO SUPERIOR DE EDUCAÇÃ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