next up previous contents
Next: Master - Slave Up: Parallel Collision Detection Previous: Ahmdal's Law

Parallel Virtual Machine

As already mentioned earlier, our parallelization of the collision detection methods presented earlier was implemented using Parallel Virtual Machine or PVM ([GBD+94]). PVM is the result of ongoing research into the use of heterogenous networks in computing at the University of Tennessee, Oak Ridge National Laboratory and other universities. It is essentially a system that allows a network of very different types of computers to be used as a single, parallel computers for example as in 4.2. Of course, a specific type of computer can only be used if a version specific for the architecture of the computer is available.

More precisely, the system consists of two parts. The first part is a daemon program, called pvmd3 or pvmd. This daemon must run on every computer in the network that is to be used in the computing network. If there is no daemon available for this system, the system cannot be used. The daemon allows a computer to be used in different PVM's. The second part in the PVM system is a library. This library contains a number of tools and routines necessary to start up programs, add or remove computers from the virtual machine etc. In the current implementation of PVM, three programming languages are supported, namely C, C++ and FORTRAN, since these languages are most often used in scientific computing.


  
Figure 2: PVM allows easy use of heterogeneous computer networks
\begin{figure}
\begin{center}

\includegraphics [width=7cm] {pvm_het.eps}
\end{center}\end{figure}

Now, when designing an application using PVM, you have to take into account that the basic element of computation is a task. Such a task usually corresponds with a UNIX task. It can, using the functionality offered by the PVM library, start up and kill other tasks, communicate with them and much more. A complete description and manual can be found in [GBD+94]. It is important to notice that the execution of tasks can be handled completely by the PVM daemon. We can let PVM decide on which computer and when exactly the task is effectively executed (of course, as fast as possible and taking into account the dependencies between the computations performed in the tasks). On the other hand, if you know that a certain computer is particularly fast in handling the computation needed by a certain task, it is perfectly possible to assign that task to that computer. As you can see, PVM allows great flexibility in parallel and concurrent computation and at the same time provides an abstract interface to the network of computers so you don't have to worry about specific implementations for different architectures.


next up previous contents
Next: Master - Slave Up: Parallel Collision Detection Previous: Ahmdal's Law
Marc Ramaekers
5/17/1999