The Parallel Virtual Machine (PVM) is one of the most popular message passing models. PVM is public domain and can be obtained free of charge via ftp [4]. PVM makes a heterogeneous network of parallel and serial UNIX computers to appear as a single concurrent computational resource.
Controlled interaction of a heterogeneous set of workstations is done via TCP/IP sockets or native MPP communication protocols, with the possibility of dynamically adding more resources to the network as they are needed.
Applications view PVM as a general and flexible parallel computing system that supports the message-passing paradigm. PVM is not restricted to specific architectures. Application programs may have arbitrary control and dependency structures with arbitrary -- and even dynamical -- relationships among the parallel processes. This allows the most general form of MIMD (resp. SPMD-) programming. Task granularity, communication frequency and load balancing are completely at the disposal of the programmer. There exist library calls for blocking and non-blocking send and receive operations. Groups of processes can be defined for broadcasts, barrier synchronization and other group functions. Release 3.3 provides features for the efficient use of architecture-dependent and low-level communication modes on parallel systems.