Your SlideShare is downloading. ×
Pvm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Pvm

224
views

Published on

Published in: Education, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
224
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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_EXPORT=nomes
    • 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: 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)
  • 26. 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.
  • 27. 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()
  • 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: 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
  • 29.
    • Pvm_barrier()
    • Pvm_gather()
    • Pvm_scatter()
    • Pvm_reduce()
  • 30. Exemplos de programas //hello.c 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(); }
  • 31. //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(); }
  • 32. Links
    • http://www.epm.ornl.gov/pvm/
    • http://www.netlib.org/pvm3/
    • http://www.math.cmu.edu/Parallel_Cluster/pvm.html