PVM is a software system that enables a collection of heterogeneous computers to be used as a coherent and flexible concurrent computational resource, or a "parallel virtual machine".
The individual computers may be shared-memory or local-memory multiprocessors, vector supercomputers, specialized graphics engines, or scalar workstations and PCs, that may be interconnected by a variety of networks, such as Ethernet or FDDI.
PVM consists of a run-time environment and library for message passing, task and resource management, and fault notification. While PVM will not automatically make a commercial software package run faster, it does provide a powerful set of functions for manually parallelizing an existing source program, or for writing new parallel/distributed programs.
The PVM software must be specifically installed on every machine that is to be used in a given "virtual machine". There is no "automatic" installation of executables onto remote machines in PVM, although simply copying the pvm3/lib and pvm3/bin directories to another similar machine (and setting $PVM_ROOT and $PVM_ARCH) is sufficient for running PVM programs. Compiling or building PVM programs requires the full PVM installation.
User programs written in C, C++, or Fortran can access PVM through provided library routines.
PVM also supports broadcasting (PVM_bcast) which sends to all processes in a group and multicasting (PVM_mcast) which sends to a specific list of processes.
This article is based on material taken from Parallel+Virtual+Machine at the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later. https://foldoc.org/Parallel+Virtual+Machine ↩
"Parallel Virtual Machine (PVM) Homepage". http://www.csm.ornl.gov/pvm/ ↩