Parallel Programming in the Parallel Virtual Machine - El‐Rewini, Hesham; Abd‐El‐Barr, Mostafa (Advanced Computer Architecture and Parallel Processing, 2004)
The Parallel Virtual Machine (PVM) was originally developed at Oak Ridge National Laboratory and the University of Tennessee. It makes it possible to develop applications on a set of heterogeneous computers connected by a network that appears logically to the users as a single parallel computer. PVM offers a powerful set of process control and dynamic resource management functions. It provides programmers with a library of routines for the initiation and termination of tasks, synchronization, and the alteration of the virtual machine configuration. PVM also facilitates message passing via a number of simple constructs. Interoperability among different heterogeneous computers is a major advantage in PVM. Programs written for some architecture can be copied to another architecture, compiled and executed without modification. Additionally, these PVM executables can still communicate with each other. A PVM application is made of a number of tasks that cooperate to jointly provide a solution to a single problem. A task may alternate between computation and communication with other tasks. The programming model is a network of communicating sequential tasks in which each task has its own locus of control, and sequential tasks communicate by exchanging messages. We particularly cover aspects such as Parallel Virtual Machine (PVM) Environment, PVM Application Structure, Supervisor‐Workers Structure, Hierarchy Structure, Task Identifier Retrieval, Dynamic Task Creation, Task Groups, Communication Among Tasks, Message Buffers, Data Packing, Data Unpacking, Task Synchronization, and Reduction Operations.