1 / 32

Parallel Virtual Machine (PVM)

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.

stevie
Télécharger la présentation

Parallel Virtual Machine (PVM)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation 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%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(); }

  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

More Related