Parallel Virtual Machine (PVM)

32
Parallel Virtual Machine (PVM)

description

Parallel Virtual Machine (PVM). 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. Características. - PowerPoint PPT Presentation

Transcript of Parallel Virtual Machine (PVM)

Page 1: Parallel Virtual Machine (PVM)

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 extremamente simples

• Contém primitivas de alto-nível como broadcast e sincronização com barreiras

Page 3: Parallel Virtual Machine (PVM)

Características

• Tolerância a falhas

• Escalabilidade

• Heterogeneidade

• Portabilidade

Page 4: Parallel Virtual Machine (PVM)

O TID (Task Identifier)

Page 5: Parallel Virtual Machine (PVM)

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)

Notificações

• Tarefa termina ou trava

• Host é removido ou trava

• Host é adicionado

Page 7: Parallel Virtual Machine (PVM)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

• Pvm_barrier()

• Pvm_gather()

• Pvm_scatter()

• Pvm_reduce()

Page 30: Parallel Virtual Machine (PVM)

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)

//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)

Links

• http://www.epm.ornl.gov/pvm/

• http://www.netlib.org/pvm3/

• http://www.math.cmu.edu/Parallel_Cluster/pvm.html