Parallel Virtual Machine (PVM)

download

of 32

  • date post

    31-Jan-2016
  • Category

    Documents
  • view

    24
  • download

    0

Embed Size (px)

description

Parallel Virtual Machine (PVM). O que PVM?. Mquina virtual dinamicamente configurvel Protocolo de transmisso de mensagens de alta-performance Interface extremamente simples Contm primitivas de alto-nvel como broadcast e sincronizao com barreiras. Caractersticas. - PowerPoint PPT Presentation

transcript

  • Parallel Virtual Machine (PVM)

  • O que PVM?Mquina virtual dinamicamente configurvelProtocolo de transmisso de mensagens de alta-performanceInterface extremamente simplesContm primitivas de alto-nvel como broadcast e sincronizao com barreiras

  • CaractersticasTolerncia a falhasEscalabilidadeHeterogeneidadePortabilidade

  • O TID (Task Identifier)

  • Modelo de mensagensO remetente no espera confirmao do destinatrio. (Sua execuo continua assim que a mensagem chega na camada de rede)O destinatrio pode usar o mtodo bloqueante e no-bloqueante (com e sem time-out) para receber mensagens

  • NotificaesTarefa termina ou travaHost removido ou travaHost adicionado

  • O daemon PVM (pvmd)Cada host da mquina virtual executa uma instncia do pvmdNo permitido que deamons rodando como usurios diferentes se comuniquem

  • A biblioteca PVM (libpvm) to simples quanto possvel, aumentando a eficinciaA segurana oferecida (como teste de parmetros) mnimaApenas a interface comum s diferentes arquiteturas de mquina. O ncleo otimizado especificamente para cada uma

  • Libpvm: Buffers de dadosA passagem de mensagens feita por meio de ponteiros, para agilizar sua transmissoO gerenciamento de memria feito por uma espcie de coletor de lixo

  • Libpvm: MensagensO remetente cria buffers de dados com primitivas especficas que anexam o tipo ao cabealhoO destinatrio recebe a mensagem com tipo determinado

  • Libpvm: Linguagens DisponveisA biblioteca diretamente escrita em C e C++Existe uma biblioteca em Fortran que, na verdade, um wrapper para a biblioteca em C

  • Comunicao pvmd-pvmdProtocolo UDPVantagens sobre o TCP: Escalabilidade Baixo overhead de inicializao Flexibilidade para implementao de mtodos de tolerncia a falhas

  • Comunicao pvmd-tarefa e tarefa-tarefa Protocolo TCPPorqu do protocolo TCPInexistncia de confiabilidade do UDP requer que os clientes interrompam suas tarefas para gerenciar problemas com pacotes

  • Roteamento de mensagensAs mensagens so fragmentadas de modo que o tamanho dos pacotes seja igual ao MTU da redeEventualmente uma comunicao pvmd-pvmd requer que os pacotes sejam refragmentadosO pvmd nunca se comunica com tarefas de outros hosts possvel estabeler uma comunicao direta entre duas tarefas do mesmo host

  • Ambiente das tarefasVariveis de ambiente so suportadas pelo PVM, para exportar uma varivel: PVM_EXPORT=nomesCada tarefa tem /dev/null aberto como stdinStdout do parent

  • Ambiente das tarefas: Tracing e DebuggingPVM pode armazenar todas as chamadas com parmetros e resultados, mandando para o stdout, se o TID for 0 trace desligadospawn com flag de depurao ligado faz com que as tarefas sejam inicializadas com o script de debug

  • Console PVMprogramado em PVMConfigurao da virtual machine, Inicializao de processoscoleta sada e maneja tracesmaneja mensagens de notificao

  • Limitao de recursosInerente ao Sistema OperacionalPVM no impe limitaes. Quando alguma limitao imposta pelo S.O. o daemon lana uma mensagem de erro

  • Limitao de Recursos: daemonquantos processos o usurio pode rodar?quantos file-descriptors o pvmd pode ter? TCP streams para comunicao com tarefasmensagens so armazenadas em memria, sem controle por parte do daemon.

  • Limitao de recursos: TarefasCom quantas outras tarefas pode se conectar, TCP, conexo tarefa-tarefamaior mensagem que uma tarefa pode enviar est limitada ao espao de endereamento da tarefaoverhead em um receptor nico

  • Sistemas multiprocessadosPVM possui suporte a sistemas multiprocessados. Message Passing & Shared Memory.Transparncia para o usurioTarefa pode ser destinada a algum computador especfico. Ganho de eficincia. Perda de portabilidade.

  • Ambiente De ProgramaoConsiste de um pool de hosts, configurado pelo programador, onde mquinas podem ser adicionadas ou excludas deste pool.Pode ser uma mquina, mono ou multi-processada, vrias mquinas em cluster ou distribudas por uma rede, podem inclusive estar geograficamente distantes (i.e. Internet)

  • Nveis de programaoTransparent mode: a tarefa executada automaticamente no computador mais apropriadoArchitecture-dependent: o programador especifica o tipo de computador em que a tarefa dever rodarLow-level: o programador especifica uma mquina especfica em que determinada tarefa dever ser executada

  • Esquema de programaoPara cada tarefa a ser executada, o programador gera um novo programa.Este programa ser compilado para a arquitetura do host pool.O usurio inicia o processo mestre de uma tarefa. Este, por sua vez, inicializa os processos escravos (como ser visto no Hello World remoto mais adiante).

  • Programando com PVMIncluir o header pvm3.hInicializao do programa: info=pvm_mytid()Finalizao do programa: pvm_exit()Para lanar uma tarefa a vrios processadores, deve-se usar a funo pvm_spawn: numt=pvm_spawn("my_task", argv, mode, where, n_task, tids)

  • Comunicao entre tarefasInicializao de transmisso: buf_id=pvm_initsend(mEmpacotamento).Empacotamento dos dados: pvm_packM(), onde M o modo de empacotamentoEnviar 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.

  • Recebendo Mensagensbufid=pvm_recv(tid, msgtag) Tid ou msgtag = -1 aceita qualquer valorPvm_trecv: igual ao recv, porm, com timeoutPvm_nrecv: igual ao recv, porm, no bloqueantePvm_probe: simplesmente avisa se uma mensagem chegou ou nopvm_unpack()

  • Grupos Dinmicos De ProcessosQuando um conjunto de tarefas executam operaes parecidas, pode-se criar um grupo de processosPara entrar em um grupo, uma tarefa deve chamar: inum=pvm_joingroup("group_name"), caso o grupo no exista, ele criado. Inum ser a ordem da tarefa no grupoPara sair de um grupo: pvm_lvgroup(). Pvm_bcast: envia a todas as tarefas do grupo

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

  • 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); }elseprintf("can't start hello_other\n");

    pvm_exit(); }

  • //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(); }

  • Linkshttp://www.epm.ornl.gov/pvm/http://www.netlib.org/pvm3/http://www.math.cmu.edu/Parallel_Cluster/pvm.html