next up previous
Next: Some Program Visualization Systems Up: Performance Visualization for Parallel Previous: Performance Visualization Tools

Layers of Parallel Programs

Figure 1 shows some of the layers that may appear in the structure of parallel application programs. They provide a context in which to describe some of the tools.


  
Figure 1: Layers of a Parallel Application
2#2

At the bottom layer are the machines we are trying to utilize. Here we assume they are parallel machines, chosen to to provide either current maximum performance or to provide an environment for the development of programs to run on the fastest machines of the future. They come in a variety of architectures. Those we are using at Argonne include a Sequent Symmetry, BBN TC-2000, Intel IPSC/860, and networks of workstations from Sun, Next, IBM, and Silicon Graphics. We are preparing our tools for use on the Intel Touchstone Delta, with 520 i860 nodes.

The next level up consists of the vendor software to express and control parallelism, necessary in order to use the machines. Since standards for such primitives do not exist, and the vendors compete with each other in offering different programming models and primitive operations, this software is portable neither syntactically nor semantically. That is, not only do vendors offer different names for similar functions, but in many cases radically different models of computation and slightly different semantics for very similar operations. This is not a criticism; at this stage in the development of parallel programming paradigms it is necessary to explore alternatives competitively.

Nonetheless, with software lifetimes increasing and hardware lifetimes decreasing, it is more clear than ever that one is liable to be developing software on one machine which will be run on another. Thus portability becomes a important concern in any project, and a number of systems for writing portable programs by hiding the vendor software beneath a layer of machine-independent primitives that implement a portable computational model have evolved. At the lower level we are discussing here, such systems are typically subroutine libraries for low-level languages such as C and Fortran. One such system developed at Argonne is described in [1]. It has served as the foundation for several other related systems, and for the current such system under development at Argonne, called p4.

The next layer up represents the attempt to bring to parallel programming the benefits of high-level languages. Such languages provide the usual programmer productivity benefits and when combined with chunks of sequential code written in low-level languages for efficiency, need not have a negative impact on performance. At Argonne we are using two systems based on logic, PCN[2] and the Aurora Parallel Prolog system[7].

At the highest level there are application-specific systems, which hide all of the layers below from the end user. We will not be concerned with this layer here.


next up previous
Next: Some Program Visualization Systems Up: Performance Visualization for Parallel Previous: Performance Visualization Tools
Karen D. Toonen
1998-11-19