Parallel Virtual Machine
| Parallel Virtual Machine | |
|---|---|
| Desenvolvedores | Oak Ridge National Laboratory Universidade do Tennessee Universidade Emory |
| Lançamento estável | |
| Escrito em | C |
| Sistema operacional | Unix e Windows |
| Tipo | Ambiente de computação paralela e computação distribuída |
| Website | Netlib |
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.[2]
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.[2][3]
História
[editar | editar código]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.[4]
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.[4]
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.[3]
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.[5]
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.[1]
Arquitetura
[editar | editar código]A documentação do PVM descreve dois componentes principais. O primeiro é o daemon pvmd3, 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.[6]
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.[6]
A distribuição também inclui um console textual, iniciado pelo comando pvm, 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.[2]
Modelo de programação
[editar | editar código]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.[6]
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.[6]
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.[2]
Comunicação e heterogeneidade
[editar | editar código]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.[7]
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.[2]
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.[7]
Instalação
[editar | editar código]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.[6]
Os programas devem ser compilados para as arquiteturas nas quais serão executados. A variável PVM_ARCH identifica a arquitetura local, enquanto PVM_ROOT indica o diretório em que o sistema está instalado.[6]
Ver também
[editar | editar código]Referências
[editar | editar código]Referências
- 1 2 3 «PVM Version 3.4.6 is Available on Netlib» (em inglês). Netlib. 2 de fevereiro de 2009. Consultado em 31 de julho de 2026. Cópia arquivada em 31 de julho de 2026
- 1 2 3 4 5 «Parallel Virtual Machine (PVM) Version 3» (em inglês). Netlib. Consultado em 31 de julho de 2026. Cópia arquivada em 31 de julho de 2026
- 1 2 Sunderam, Vaidy S.; Geist, G. A.; Dongarra, Jack; Manchek, Robert (abril de 1994). «The PVM concurrent computing system: Evolution, experiences, and trends». Parallel Computing (em inglês). 20 (4): 531–545. doi:10.1016/0167-8191(94)90027-2
- 1 2 «A Bit of History». PVM: Parallel Virtual Machine — A User's Guide and Tutorial for Networked Parallel Computing (em inglês). MIT Press. 1994. Consultado em 31 de julho de 2026. Cópia arquivada em 27 de julho de 2023
- ↑ «Oak Ridge National Laboratory: 80 Years of Great Science» (em inglês). Oak Ridge National Laboratory. Consultado em 31 de julho de 2026. Cópia arquivada em 11 de julho de 2026
- 1 2 3 4 5 6 «The PVM System». PVM: Parallel Virtual Machine — A User's Guide and Tutorial for Networked Parallel Computing (em inglês). MIT Press. 1994. Consultado em 31 de julho de 2026. Cópia arquivada em 31 de julho de 2026
- 1 2 «How PVM Works». PVM: Parallel Virtual Machine — A User's Guide and Tutorial for Networked Parallel Computing (em inglês). MIT Press. 1994. Consultado em 31 de julho de 2026. Cópia arquivada em 9 de junho de 2024
Ligações externas
[editar | editar código]- Sítio oficial
- «PVM: A User's Guide and Tutorial for Networked Parallel Computing» (em inglês)
- «Notas de lançamento do PVM» (em inglês)
- «Guia do utilizador do PVM» (em inglês)