Parallel Virtual Machine (PVM) é um sistema de software para computação paralela e computação distribuída que permite reunir computadores heterogéneos conectados em rede em um recurso computacional concorrente configurável pelo utilizador. Os computadores participantes podem possuir arquiteturas, sistemas operativos e capacidades de processamento diferentes.
Aplicações escritas em C ou Fortran utilizam rotinas fornecidas pelo PVM para criar processos, enviar e receber mensagens, sincronizar tarefas e modificar a composição da máquina virtual. O sistema também realiza o encaminhamento de mensagens e a conversão de dados entre computadores que utilizam representações internas diferentes.
História
O projeto PVM começou durante o verão de 1989 no Oak Ridge National Laboratory, nos Estados Unidos. O primeiro protótipo, denominado PVM 1.0, foi desenvolvido por Vaidy Sunderam e Al Geist e utilizado internamente no laboratório, sem distribuição pública.
A segunda versão foi desenvolvida na Universidade do Tennessee e lançada publicamente em março de 1991. Após diferentes revisões da série 2, o programa foi reescrito, dando origem ao PVM 3, concluído em fevereiro de 1993.
O desenvolvimento posterior ocorreu como uma colaboração entre o Oak Ridge National Laboratory, a Universidade do Tennessee e a Universidade Emory. O projeto fazia parte de pesquisas sobre computação concorrente em redes heterogéneas.
Durante a década de 1990, o PVM tornou-se amplamente utilizado em aplicações científicas e foi considerado um padrão de facto para a formação de agrupamentos de computadores heterogéneos. Segundo o Oak Ridge National Laboratory, o sistema havia atraído mais de 400 mil utilizadores em meados daquela década.
A versão 3.4.6 foi disponibilizada em fevereiro de 2009. A atualização concentrou-se em correções de erros e de segurança, compatibilidade com diferentes distribuições Linux, atualizações de compiladores e melhorias para arquiteturas de 64 bits.
Arquitetura
A documentação do PVM descreve dois componentes principais. O primeiro é o daemon , executado em cada computador participante da máquina virtual. O segundo é uma biblioteca de rotinas utilizada pelas aplicações para comunicar-se com o ambiente PVM e com outras tarefas.
O daemon mantém informações sobre os computadores e as tarefas que integram a máquina virtual, inicia processos e participa do encaminhamento de mensagens. As bibliotecas oferecem rotinas para transmissão e receção de dados, criação de tarefas, sincronização e alteração da configuração da máquina virtual.
A distribuição também inclui um console textual, iniciado pelo comando , que permite adicionar ou remover computadores, listar tarefas, iniciar programas e encerrar a máquina virtual. O XPVM foi desenvolvido como uma interface gráfica complementar para acompanhamento e análise da execução das aplicações.
Modelo de programação
Uma aplicação PVM é formada por um conjunto de tarefas, cada uma responsável por uma parte do trabalho computacional. Essas tarefas podem executar funções diferentes ou utilizar o mesmo programa sobre partes distintas dos dados.
No paralelismo funcional, tarefas diferentes executam etapas distintas da aplicação, como entrada, processamento e apresentação dos resultados. No paralelismo de dados, diversas tarefas executam operações semelhantes sobre subconjuntos dos dados, modelo também denominado programa único, múltiplos dados. O PVM permite combinar as duas abordagens.
As tarefas são identificadas por números próprios e comunicam-se por meio de mensagens. As bibliotecas oferecem operações ponto a ponto, envio para grupos de tarefas, barreiras de sincronização e mecanismos de notificação.
Comunicação e heterogeneidade
Na implementação genérica, a comunicação entre os computadores utiliza sockets e os protocolos TCP e UDP. O encaminhamento pode ocorrer por intermédio dos daemons ou diretamente entre tarefas, dependendo da configuração e da plataforma.
Para permitir a comunicação entre arquiteturas incompatíveis, o PVM pode converter automaticamente os dados transmitidos. Dessa forma, uma mesma máquina virtual pode combinar estações de trabalho, computadores multiprocessados, máquinas vetoriais e outros sistemas conectados em rede.
A composição da máquina virtual pode ser modificada durante a execução. O PVM também detecta determinadas falhas de computadores ou da rede e fornece mecanismos de consulta e notificação às aplicações. Entretanto, não recupera automaticamente uma aplicação interrompida; a lógica de tolerância a falhas deve ser implementada pelo programador.
Instalação
O daemon foi projetado para poder ser instalado e executado por um utilizador comum, sem exigir privilégios administrativos. Diferentes utilizadores podem configurar máquinas virtuais próprias, inclusive utilizando parcialmente os mesmos computadores.
Os programas devem ser compilados para as arquiteturas nas quais serão executados. A variável identifica a arquitetura local, enquanto indica o diretório em que o sistema está instalado.
Ver também
Message Passing Interface Computação em cluster Computação paralela Computação distribuída Passagem de mensagens
Referências
Ligações externas
Categoria:Computação paralela Categoria:Computação distribuída Categoria:Comunicação entre processos Categoria:Software de 1991