A parallel virtual machine is a software application that allows multiple independent computers, spread out geographically to connect to each other as a network and lend their system processing power and memory to one application.
The shift in manufacturing costs and the popularity of the home computer has resulted in an increase in the affordability of very powerful computers in the consumer market. These machines are underutilized with their standard software applications, leaving a wealth of processing power free. Parallel virtual machine software allows these resources to be pooled and accessed to solve large, complex scientific, medical or industrial problems.
The parallel virtual machine was first created in 1989 at Oak Ridge National Labs by Al Geist. Based on the work there, the project was expanded at the University of Tennessee in March 1991 and has grown steadily ever since.
A parallel virtual machine system has two parts, the application that sits on the individual machines and the library of interface routines. The software application is called the parallel virtual machine daemon, pvmd3, or pmvd. This small program sits passively until required to run a parallel virtual machine application. When the user wants to run this type of program, they must first start the parallel virtual machine. This allows them access to the software on any other host.
The parallel virtual machine routine library holds all a complete list of all the codes necessary to coordinate various tasks being run on separate hosts. Included in this library are standard routines for message passing, coordination of tasks and any changes to the virtual machine itself.
The core concept behind the parallel virtual machine is that any application has several tasks which can be run independently. This type of logic is very common is complex scientific calculations. There are two models utilized in parallel virtual machines; functional and data parallelisms.
Functional parallelisms separate an application into clearly defined, independent tasks. These tasks are performed on separate host machines. The parallel virtual machine is used to coordinated based on the functions, such as input, solution, output and display.
Data parallelism or single program multiple data (SPMD) is the more popular method. In this method, all the tasks are equal, but each host is solving a small piece of the larger puzzle. A parallel virtual machine environment supports both methods, which is important as it may be most effective to mix these two methods depending on the calculations required.
C, C++ and Fortran are the computer programming languages used in the parallel virtual machine. These languages were selected because most of the applications used in this environment were built in these languages. The source code for parallel virtual machine software is widely available on the internet and can be accessed via ftp, www, xnetlib or an automatic email.