The Distributed C Development Environment
Video Animation
A MPEG video animation is availible containing:
- a short, most actual description of the Distributed
C Development Environment and its features
- the animated explanation of a simple Distributed C program
(hello.dc)
- a description of the powerful Distributed C Development
Environment application XPQRT (X11-based parallel Quick Ray Trace)
- a video sequence (flight through a futuristic world) calculated
by XPQRT
To display the video click one of the following:
Overview
The Distributed C Development Environment was developed at Technische
Universität München, Germany, at the chair of Prof. Dr. J. Eickel and is
a collection of tools for parallel and distributed programming on single-
processor-, multiprocessor- and distributed-UNIX-systems, especially on
heterogenous networks of UNIX computers. The environment's main purpose
is to support and to simplify the development of distributed applications
on UNIX networks. It consists of a compiler for a distributed programming
language, called Distributed C, a runtime library and several useful tools.
The programming model is based on explicit concurrency specification in the
programming language Distributed C, which is an extension of standard C.
Distributed C makes possible the common programming in C together with the
user-friendly programming of process management, i. e. the specification,
creation, synchronization, communication and termination of concurrently
executed processes.
The Distributed C Development Environment supports and simplifies the
distributed programming in several ways:
- Development time is reduced by checking Distributed C programs for
errors during compilation. Because of that, errors within communication
or synchronization actions can be easier detected and avoided.
- Programming is simplified by allowing the use of simple pointer types
even on loosely-coupled systems. This is perhaps the most powerful
feature of Distributed C. In this way, dynamic structures like linked
lists or trees can be passed between processes elegantly and easily -
even in heterogeneous networks. Only the anchor of a dynamic structure
must be passed to another process. The runtime system automatically
allocates heap space and copies the complete structure.
- Developement is user-friendly by supporting the generation and
installation of the executable files. A special concept was developed
for performing the generation and storage of binaries by local and
remote compilation in heterogeneous UNIX-networks.
- Programming difficulty is reduced by software-aided allocating processes
at runtime. Only the system administrator needs to have special knowledge
about the target system's hardware. The user can apply tools to map the
processes of a Distributed C program to the hosts of a concrete target
system.
- Execution time is reduced by allocating processes to nodes of a network
with a static load balancing strategy.
- Mobility of processes is supported by a powerful heterogeneous process
migration feature. Processes can be started on one machine and can be
moved at runtime to another, perhaps incompatible machine to
continue execution.
(This feature is only availible in Distributed C Development Environment
version 3.xx or higher.)
- Programming is simplified because singleprocessor-, multiprocessor- and
distributed-UNIX-systems, especially homogeneous and heterogeneous UNIX-
networks can be programmed fully transparently in Distributed C.
The environment runs on the following systems:
- Sun SPARCstations (SunOS, SOLARIS),
- Hewlett Packard workstations (HP/UX),
- IBM workstations (AIX),
- IBM ATs (SCO XENIX, SCO UNIX, LINUX),
- Convex supercomputers (ConvexOS),
- Cray supercomputers (Unicos),
- homogeneous and heterogeneous networks of the systems as mentioned above.
Moreover the implementation was designed for the use on Intel iPSC/2s.
The Distributed C Development Environment source code is provided "as is"
as free software and distributed in the hope that it will be useful,
but without warranty of any kind. You can download it via anonymous ftp
from ftp.informatik.tu-muenchen.de:/local/lehrstuhl/eickel/Distributed_C.
Documentations
At the moment the following documentations exist:
- C. Pleier, F. Distler: Entwicklung und Implementierung eines Compilers
für paralleles Programmieren in C mit Verteilung der simultan
ablaufenden Prozesse in einem homogenen Netzwerk;
Fortgeschrittenenpraktikum, Institut fuer Informatik, Technische
Universität München, 1991.
- written in german
- availible by anonymous ftp from ftp.informatik.tu-muenchen.de
/local/lehrstuhl/eickel/Distributed_C/Doku.1.deutsch.ps.gz
- describes the first implementation, contains many implementation
details
- C. Pleier: C neben C: Distributed C - Paralleles Programmieren in C;
IX-Multiuser-Multitasking-Magazin, June, pp. 88-96, Heise, 1991.
- written in german
- is a brief version of above documentation, describes the first
implementation shortly, contains some implementaion details
- C. Pleier: Evaluierung, Weiterentwicklung und Leistungsanalyse eines
Compilers für die verteilte Parallelprogrammierung; Diplomarbeit,
Institut fuer Informatik, Technische Universität München, 1992.
- written in german
- availible by anonymous ftp from ftp.informatik.tu-muenchen.de
/local/lehrstuhl/eickel/Distributed_C/Doku.2.deutsch.ps.gz
- describes the further development from higher point of view, contains
especially all heterogeneous concepts
- C. Pleier:
The Distributed C Development Environment; report TUM-I9324,
Institut fuer Informatik, Technische Universität München,
September 1993.
- written in english
- availible by anonymous ftp from ftp.informatik.tu-muenchen.de
/local/lehrstuhl/eickel/Distributed_C/manual.english.ps.gz
- is a detailed description and a user's guide at top level
of view
- C. Pleier: Ein Verfahren zur Prozeßmigration in heterogenen
UNIX-Rechnernetzen; PIK - Praxis der Informationsverarbeitung
und Kommunikation, 2/95, S. 75-81, Saur, Juni, 1995.
- written in german
- is a short description of a concept for heterogeneous process
migration implemented using the Distributed C Development
- C. Pleier: Prozeßverlagerung in heterogenen Rechnernetzen
basierend auf einer speziellen Übersetzungstechnik;
Herbert Utz Verlag Wissenschaft,
September, 1996.
- written in german
- is a comprehensive and detailed description of a concept for
heterogeneous process migration implemented using the
Distributed C Development
- Distributed
C Development Environment Video Animation (DCDE_VIDEO.mpg; 52.6 MB)
- written in english
contains:
- a short, most actual description of the Distributed
C Development Environment and its features (including
heterogeneous process migration)
- the animated explanation of a simple Distributed C program
(hello.dc)
- the description of the powerful Distributed C Development
Environment application XPQRT (X11-based parallel Quick Ray Trace)
- a video sequence (flight through a futuristic world) calculated
by XPQRT (Flight only
Video, FLIGHT.mpg; 5.6 MB)
Acknowledgements
The Distributed C Development Environment was originally designed and
implemented by
Franz Distler,
Christoph Pleier and
Markus Pleier, and
tested, evaluated, reworked and extended by Christoph Pleier
at the chair for compiler construction of Professor Dr. Jürgen
Eickel at Technische Universität München, Germany.
Special thanks for many suggestions and advices during the development
goes to Anton Hartl, Markus Stumpf,
Elmar Bartel and Markus Pleier.
Thanks for hints concerning use, application and further development goes
to Thomas Busl
, Professor Dr. Siegmar Groß
, Clemens Harlfinger
, Peter Huber.
Thanks for the development of the very powerful example XPQRT
(X11-based Parallel Quick Ray Tracer) goes to Steve Koren
for writing the original sequential raytracing code and to
Clemens Harlfinger for parallelizing and enhancing the code.
Christoph Pleier, 12.9.1996