The Proteus System

Overview

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 drawbacks:

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:

Program Repository

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:

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 detailed information

Click here to return to Proteus home page

$ Revised: Sun Feb 6 22:10:02 1994 by prins@cs.unc.edu