PVM (Parallel Virtual Machine) is a portable message-passing programming system, designed to link divide heterogeneous host machines to form a "virtual machine" which is a one, manageable parallel computing resource. Large computational troubles such as, superconductivity studies, molecular dynamics simulations, distributed fractal computations, matrix algorithms, can therefore be solved more cost effectively by using the memory of many computers and aggregate power.
PVM was developed by the University of Tennessee, The Oak Ridge National Laboratory and Emory University. The first version was released in 1989, version 2 was released in 1991 and finally version 3 was released in 1993. The PVM software allows a collection of heterogeneous computer systems to be viewed as a one parallel virtual machine. It transparently handles data conversion, all message routing and task scheduling across a network of incompatible computer architectures. The programming interface of PVM is extremely easy .The user writes his application as a collection of cooperating tasks. Tasks access PVM resources by a library of standard interface routines. These routines let the initiation and termination of tasks across the communication as well as network and synchronisation among the tasks. Communication constructs consist of those for sending and receiving data structures as well as high-level primitives such as barrier synchronization and broadcast.