Why PADE was Developed



next up previous contents
Next: The Virtual Development Up: Introduction to PADE Previous: Introduction to PADE

Why PADE was Developed

 

The goal of PADE is to facilitate the development of parallel applications that run on a heterogeneous virtual machine, that is, a machine composed of independent computers (its nodes), which may be of different types. This is a mode of computational parallelism that is growing in popularity, due in large part to the development of message-passing libraries, such as the PVM program, which allow such a machine to be constructed from ordinary workstations that are connected to a network.

The perceived need for an application like PADE arose during the early ventures of a NIST scientific workgroup while developing code for a network of workstations of different types. The complexity of such development, compared to that which takes place on a single computer, begins to become apparent even for the simplest type of application: a so-called ``embarrassingly parallel'' code that does essentially the same thing on all nodes of the virtual machine, and requires very little communication between nodes. Such a code will have components that reside on the file systems of different computers with different operating systems; these components will have to be compiled on each node, usually with differing compiler directives and options; the compiled versions must be run on each node; and the input and output streams must be managed on each node.

Consider the basic operations that arise in the development cycle of such a program:

  1. Editing source files (potentially a different set of files for each node on the virtual machine).

  2. Transferring sets of source files between nodes, as appropriate.

  3. Compiling each set of source files on each node (in a heterogeneous environment, the compiler for each architecture or even each node may be slightly different).

  4. Executing the updated program.
Steps two and three can become quite time consuming as the number of nodes increases, even if the variation of operating systems between nodes is relatively minor (e.g. if they are different variants of Unix). Also, keeping track of which source files require editing in step one can also become quite cumbersome. Thus, even straightforward applications induce an accounting burden that grows with the number of nodes. When one moves to applications that involve significant communication between nodes, the difficulties of maintaining program coherence during the process of development can become quite daunting.



next up previous contents
Next: The Virtual Development Up: Introduction to PADE Previous: Introduction to PADE




Fri Mar 31 20:30:34 EST 1995