Development of Parallel Applications
Currently, parallel applications are developed using low-level parallel
programming notations that reflect specific features of the target
architecture (e.g. shared vs. distributed memory, SIMD vs. MIMD, physical vs.
virtual interconnection network). These notations have significant
- They lack portability across architectures
- They are too low-level to support the expression of complex designs
- They yield programs that are extremely difficult to maintain as
specifications and architectures evolve
A Refinement-based Development Methodology
By expressing programs using Proteus, an executable high-level
architecture-independent parallel programming notation, we are able to
develop and evaluate sophisticated parallel algorithms free of
complex low-level architecture-specific details. This rapid
prototyping of designs permits the exploration of a large and complex
space of alternatives in which significant trade-offs exist.
Refinement of a Proteus program consists of modification of a
program to reflect restrictions in the use of the concurrency constructs.
This restriction expresses the adaptation of a high-level design to
constructs efficiently supported on a specific architecture. Since
the resulting program is still in the Proteus notation, the interpreter
can be used to assess functionality and some performance measures of
the restricted program.
Programs that are suitably refined in their use of the Proteus notation
can be automatically translated to efficient parallel programs in
low-level architecture-specific notations. These programs can then be
run directly on the targeted parallel machines.
Changes in specification or in targeted architecture can be accommodated
by making alterations in the high-level Proteus designs and attempting
to "redo" the relevant refinement steps.
The Proteus System
To support these activities, we are developing a programming environment
with the following capabilities:
- Organizes different versions of Proteus programs and generated
low-level parallel codes. Currently we use CVS or RCS on a
directory of Proteus and non-Proteus codes.
Program Modification System
- creates new versions through the following operations:
- elaboration - manual editing of a version to introduce or
- refinement - manual editing of a version to restrict the form
of concurrency employed or the conditions under which
it is employed
- translation - the automatic generation of a program
in a low-level notation from a suitably restricted
Proteus program. We use the KIDS system developed
at Kestrel Institute to implement this step.
Program Execution System
- This component consists of the Proteus interpreter, including
run-time monitoring and analysis functions, and an interface
to external modules in the form of existing applications or
those generated by translation of Proteus programs.
Module Interconnection Facility (MIF)
- This is currently a simple socket-based facility managed by the
Proteus interpreter to permit Proteus programs to communicate
with concurrently executing external applications, either existing
or generated by the translation of Proteus programs.
Parallel Virtual Machines
- To gain portability we rely on low-level parallel virtual machines
that are efficiently implemented on classes of parallel architectures.
Currently we only use CVL, but in the future we will also be using
PVM and Mach threads.
Click here for papers providing more
Click here to return to Proteus home page
$ Revised: Sun Feb 6 22:10:02 1994 by firstname.lastname@example.org