SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Parallevirtualmachine monografia

SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
willmews
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Cesar Jardim
 
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
Ramon Santos
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Alan Brumate
 

Similaire à Parallevirtualmachine monografia (20)

Plataforma Online para Ensino de Sistemas Elétricos de Potência
Plataforma Online para Ensino de Sistemas Elétricos de PotênciaPlataforma Online para Ensino de Sistemas Elétricos de Potência
Plataforma Online para Ensino de Sistemas Elétricos de Potência
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
SIMULAÇÃO MONTE CARLO PARA FLUXO DE PROCESSOS UTILIZANDO A FERRAMENTA FUSION ...
 
PROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARES
PROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARESPROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARES
PROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARES
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
 
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
 
Governança em rede de empresas: O Arranjo Produtivo Local do setor moveleiro ...
Governança em rede de empresas: O Arranjo Produtivo Local do setor moveleiro ...Governança em rede de empresas: O Arranjo Produtivo Local do setor moveleiro ...
Governança em rede de empresas: O Arranjo Produtivo Local do setor moveleiro ...
 
Implementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsImplementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufs
 
TCC-BrunoAzevedoCosta
TCC-BrunoAzevedoCostaTCC-BrunoAzevedoCosta
TCC-BrunoAzevedoCosta
 
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDITCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
 
Monografia IPv6
Monografia IPv6Monografia IPv6
Monografia IPv6
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
 
APRENDIZAGEM COLABORATIVA POR MEIO DE SOCIAL MEDIA E E-LEARNING
APRENDIZAGEM COLABORATIVA POR MEIO DE SOCIAL MEDIA E E-LEARNINGAPRENDIZAGEM COLABORATIVA POR MEIO DE SOCIAL MEDIA E E-LEARNING
APRENDIZAGEM COLABORATIVA POR MEIO DE SOCIAL MEDIA E E-LEARNING
 
Relatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@InternetRelatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@Internet
 
Manual Trabalhos Acadêmicos - Formato A4
Manual Trabalhos Acadêmicos - Formato A4Manual Trabalhos Acadêmicos - Formato A4
Manual Trabalhos Acadêmicos - Formato A4
 
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
 
Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores
 
Algoritmos de redes
Algoritmos de redesAlgoritmos de redes
Algoritmos de redes
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
 
Manual Trabalhos Acadêmicos - Formato A5
Manual Trabalhos Acadêmicos - Formato A5  Manual Trabalhos Acadêmicos - Formato A5
Manual Trabalhos Acadêmicos - Formato A5
 

Parallevirtualmachine monografia