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: