Parallel Virtual Machine (PVM) - PowerPoint PPT Presentation

About This Presentation
Title:

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 ... – PowerPoint PPT presentation

Number of Views:188
Avg rating:3.0/5.0
Slides: 33
Provided by: ss66
Category:

less

Transcript and Presenter's Notes

Title: Parallel Virtual Machine (PVM)


1
Parallel Virtual Machine (PVM)
2
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

3
Características
  • Tolerância a falhas
  • Escalabilidade
  • Heterogeneidade
  • Portabilidade

4
O TID (Task Identifier)
5
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

6
Notificações
  • Tarefa termina ou trava
  • Host é removido ou trava
  • Host é adicionado

7
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

8
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

9
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

10
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

11
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

12
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

13
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

14
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

15
Ambiente das tarefas
  • Variáveis de ambiente são suportadas pelo PVM,
    para exportar uma variável PVM_EXPORTnomes
  • Cada tarefa tem /dev/null aberto como stdin
  • Stdout do parent

16
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

17
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

18
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

19
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.

20
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

21
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.

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

23
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

24
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).

25
Programando com PVM
  • Incluir o header pvm3.h
  • Inicialização do programa infopvm_mytid()
  • Finalização do programa pvm_exit()
  • Para lançar uma tarefa a vários processadores,
    deve-se usar a função pvm_spawn
    numtpvm_spawn("my_task", argv, mode, where,
    n_task, tids)

26
Comunicação entre tarefas
  • Inicialização de transmissão buf_idpvm_initsend(
    mEmpacotamento).
  • Empacotamento dos dados pvm_packM(), onde M é o
    modo de empacotamento
  • Enviar os dados infopvm_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.

27
Recebendo Mensagens
  • bufidpvm_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()

28
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
    inumpvm_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

29
  • Pvm_barrier()
  • Pvm_gather()
  • Pvm_scatter()
  • Pvm_reduce()

30
Exemplos de programas
//hello.c main() int cc, tid, msgtag char
buf100 printf("i'm tx\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 tx s\n", tid, buf)
else printf("can't start
hello_other\n") pvm_exit()
31
//Hello_other.c include "pvm3.h main()
int ptid, msgtag char buf100 ptid
pvm_parent() strcpy(buf, "hello, world from
") msgtag 1 pvm_initsend(PvmDataDefault)
pvm_pkstr(buf) pvm_send(ptid, msgtag)
pvm_exit()
32
Links
  • http//www.epm.ornl.gov/pvm/
  • http//www.netlib.org/pvm3/
  • http//www.math.cmu.edu/Parallel_Cluster/pvm.html
Write a Comment
User Comments (0)
About PowerShow.com