parallel virtual machine (pvm). o que é pvm? máquina virtual dinamicamente configurável protocolo...
TRANSCRIPT
![Page 1: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/1.jpg)
Parallel Virtual Machine (PVM)
![Page 2: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/2.jpg)
O que é PVM?
• Máquina virtual dinamicamente configurável
• Protocolo de transmissão de mensagens de alta-performance
• Interface extremamente simples• Contém primitivas de alto-nível como
broadcast e sincronização com barreiras
![Page 3: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/3.jpg)
Características
• Tolerância a falhas• Escalabilidade• Heterogeneidade• Portabilidade
![Page 4: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/4.jpg)
O TID (Task Identifier)
![Page 5: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/5.jpg)
Modelo de mensagens
• O remetente não espera confirmação do destinatário. (Sua execução continua assim que a mensagem chega na camada de rede)
• O destinatário pode usar o método bloqueante e não-bloqueante (com e sem time-out) para receber mensagens
![Page 6: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/6.jpg)
Notificações
• Tarefa termina ou trava• Host é removido ou trava• Host é adicionado
![Page 7: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/7.jpg)
O daemon PVM (pvmd)
• Cada host da máquina virtual executa uma instância do pvmd
• Não é permitido que deamons rodando como usuários diferentes se comuniquem
![Page 8: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/8.jpg)
A biblioteca PVM (libpvm)
• É tão simples quanto possível, aumentando a eficiência
• A segurança oferecida (como teste de parâmetros) é mínima
• Apenas a interface é comum às diferentes arquiteturas de máquina. O núcleo é otimizado especificamente para cada uma
![Page 9: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/9.jpg)
Libpvm: Buffers de dados
• A passagem de mensagens é feita por meio de ponteiros, para agilizar sua transmissão
• O gerenciamento de memória é feito por uma espécie de coletor de lixo
![Page 10: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/10.jpg)
Libpvm: Mensagens
• O remetente cria buffers de dados com primitivas específicas que anexam o tipo ao cabeçalho
• O destinatário recebe a mensagem com tipo determinado
![Page 11: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/11.jpg)
Libpvm: Linguagens Disponíveis
• A biblioteca é diretamente escrita em C e C++
• Existe uma biblioteca em Fortran que, na verdade, é um wrapper para a biblioteca em C
![Page 12: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/12.jpg)
Comunicação pvmd-pvmd
• Protocolo UDP• Vantagens sobre o TCP: Escalabilidade Baixo overhead de inicialização Flexibilidade para implementação de
métodos de tolerância a falhas
![Page 13: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/13.jpg)
Comunicação pvmd-tarefa e tarefa-tarefa
• Protocolo TCP• Porquê do protocolo TCP
Inexistência de confiabilidade do UDP requer que os clientes
interrompam suas tarefas para gerenciar problemas com pacotes
![Page 14: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/14.jpg)
Roteamento de mensagens
• As mensagens são fragmentadas de modo que o tamanho dos pacotes seja igual ao MTU da rede
• Eventualmente uma comunicação pvmd-pvmd requer que os pacotes sejam refragmentados
• O pvmd nunca se comunica com tarefas de outros hosts
• É possível estabeler uma comunicação direta entre duas tarefas do mesmo host
![Page 15: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/15.jpg)
Ambiente das tarefas
• Variáveis de ambiente são suportadas pelo PVM, para exportar uma variável: PVM_EXPORT=nomes
• Cada tarefa tem /dev/null aberto como stdin• Stdout do parent
![Page 16: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/16.jpg)
Ambiente das tarefas: Tracing e Debugging
• PVM pode armazenar todas as chamadas com parâmetros e resultados, mandando para o stdout, se o TID for 0 trace desligado
• spawn com flag de depuração ligado faz com que as tarefas sejam inicializadas com o script de debug
![Page 17: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/17.jpg)
Console PVM
• programado em PVM• Configuração da virtual machine, • Inicialização de processos• coleta saída e maneja traces• maneja mensagens de notificação
![Page 18: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/18.jpg)
Limitação de recursos
• Inerente ao Sistema Operacional• PVM não impõe limitações. Quando
alguma limitação é imposta pelo S.O. o daemon lança uma mensagem de erro
![Page 19: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/19.jpg)
Limitação de Recursos: daemon
• quantos processos o usuário pode rodar?• quantos file-descriptors o pvmd pode ter?
TCP streams para comunicação com tarefas• mensagens são armazenadas em memória,
sem controle por parte do daemon.
![Page 20: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/20.jpg)
Limitação de recursos: Tarefas
• Com quantas outras tarefas pode se conectar, TCP, conexão tarefa-tarefa
• maior mensagem que uma tarefa pode enviar está limitada ao espaço de endereçamento da tarefa
• overhead em um receptor único
![Page 21: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/21.jpg)
Sistemas multiprocessados
• PVM possui suporte a sistemas multiprocessados. Message Passing & Shared Memory.
• Transparência para o usuário• Tarefa pode ser destinada a algum
computador específico. • Ganho de eficiência. • Perda de portabilidade.
![Page 22: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/22.jpg)
Ambiente De Programação
• Consiste de um pool de hosts, configurado pelo programador, onde máquinas podem ser adicionadas ou excluídas deste pool.
• Pode ser uma máquina, mono ou multi-processada, várias máquinas em cluster ou distribuídas por uma rede, podem inclusive estar geograficamente distantes (i.e. Internet)
![Page 23: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/23.jpg)
Níveis de programação
• Transparent mode: a tarefa é executada automaticamente no computador mais apropriado
• Architecture-dependent: o programador especifica o tipo de computador em que a tarefa deverá rodar
• Low-level: o programador especifica uma máquina específica em que determinada tarefa deverá ser executada
![Page 24: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/24.jpg)
Esquema de programação
• Para cada tarefa a ser executada, o programador gera um novo programa.
• Este programa será compilado para a arquitetura do host pool.
• O usuário inicia o processo mestre de uma tarefa. Este, por sua vez, inicializa os processos escravos (como será visto no Hello World remoto mais adiante).
![Page 25: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/25.jpg)
Programando com PVM
• Incluir o header pvm3.h• Inicialização do programa:
info=pvm_mytid()• Finalização do programa: pvm_exit()• Para lançar uma tarefa a vários processadores,
deve-se usar a função pvm_spawn: numt=pvm_spawn("my_task", argv, mode, where, n_task, tids)
![Page 26: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/26.jpg)
Comunicação entre tarefas
• Inicialização de transmissão: buf_id=pvm_initsend(mEmpacotamento).
• Empacotamento dos dados: pvm_packM(), onde M é o modo de empacotamento
• Enviar os dados: info=pvm_send(tid, msgtag), onde o tag indica como os dados foram empacotados. pvm_mcast é parecido com o pvm_send, mas recebe um array de tids.
![Page 27: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/27.jpg)
Recebendo Mensagens
• bufid=pvm_recv(tid, msgtag) • Tid ou msgtag = -1 aceita qualquer valor• Pvm_trecv: igual ao recv, porém, com timeout• Pvm_nrecv: igual ao recv, porém, não bloqueante• Pvm_probe: simplesmente avisa se uma
mensagem chegou ou não• pvm_unpack()
![Page 28: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/28.jpg)
Grupos Dinâmicos De Processos
• Quando um conjunto de tarefas executam operações parecidas, pode-se criar um grupo de processos
• Para entrar em um grupo, uma tarefa deve chamar: inum=pvm_joingroup("group_name"), caso o grupo não exista, ele é criado. Inum será a ordem da tarefa no grupo
• Para sair de um grupo: pvm_lvgroup(). • Pvm_bcast: envia a todas as tarefas do grupo
![Page 29: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/29.jpg)
• Pvm_barrier()• Pvm_gather()• Pvm_scatter()• Pvm_reduce()
![Page 30: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/30.jpg)
Exemplos de programas//hello.c
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 31: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/31.jpg)
//Hello_other.c
#include "pvm3.h“
main(){
int ptid, msgtag; char buf[100];
ptid = pvm_parent(); strcpy(buf, "hello, world from "); msgtag = 1;pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, msgtag);
pvm_exit(); }
![Page 32: Parallel Virtual Machine (PVM). O que é PVM? Máquina virtual dinamicamente configurável Protocolo de transmissão de mensagens de alta-performance Interface](https://reader035.vdocuments.site/reader035/viewer/2022062818/5706384c1a28abb8238f614e/html5/thumbnails/32.jpg)
Links
• http://www.epm.ornl.gov/pvm/• http://www.netlib.org/pvm3/• http://www.math.cmu.edu/
Parallel_Cluster/pvm.html