Coordination Programming
Research on parallel and distributed computing at RISC-Linz has its origins in
the 1970s [Buc78]. In the frame of this research, various programming
languages have been developed and used to coordinate concurrent activities of
symbolic computation systems on multi-processors and computer networks. Among
the more recent activities are the following:
- pD
-
pD [Sch94a] [Sch95] [Sch96a] is a
para-functional language that has been developed as a high-level programming
interface for the parallel computer algebra kernel PACLIB (see below).
Parallelism may be expressed by several forms of annotations; the compiler
generates C code with PACLIB task creation and synchronization statements. Via
an external interface the programmer may call SACLIB functions from the
functional layer thus using pD as a parallel coordination language for
computer algebra applications. The performance of the generated code is
practically the same as for manually implemented PACLIB programs.
- PACLIB
-
PACLIB [HSN+92] [SH93b]
[SH93a] [SH93c]
[Sch94b] [HNS95] is a
shared memory parallel variant of the runtime kernel of the computer algebra
library SACLIB [BCE+92] for symbolic and algebraic
computation. PACLIB provides very efficient light-weight tasks, parallel
garbage-collection, non-determinism, and lazy task creation. Sequential SACLIB
code may be freely embedded in PACLIB with the same efficiency as in the
sequential system thus using PACLIB as a coordination system for
SACLIB algorithms. A variety of computer algebra applications have been
developed in PACLIB on a Sequent Symmetry system with 20
processors [HL94] [LP94].
- ||MAPLE||
-
||MAPLE|| (parallel MAPLE) [Sie92] [Sie93b]
[Sie93a] is a concurrent variant of the computer algebra system
MAPLE. The system uses the declarative Guarded Horn Clause language
STRAND [FT89a] as a parallel
coordination language to map MAPLE processes to processors. Thus it
becomes possible to call from a parallel STRAND program MAPLE functions for
algebraic computation. Consequently the programmer may write sequential parts
of a computer algebra program in MAPLE and use STRAND for parallelization,
communication and synchronization. The system runs on shared and distributed
memory multi-processors and on computer networks.
- STURM
-
STURM is a C++ library for sequential and parallel symbolic
computation [HNSS94] [BHP96]. As a successor to
PACLIB, it consists of several packages each of which implements classes and
operations in a certain domain. The library provides features for automatic
memory management, parallel computation on shared and distributed memory
machines and on networks of workstations, operations over numerical domains
such as floating point numbers and integers and over domains such as
polynomials, matrices, etc. Various high-level application packages have been
developed on top of this library.
- Computer Networks
-
At RISC-Linz computer networks have been employed for several years as parallel
computing platforms. Using workstation networks, characteristic-set-based
algorithms [Wan91] and quantifier elimination methods [Hon92] have
been parallelized and a distributed variant of the parallel
coordination language Linda has been developed [Zet92]. Likewise,
distributed variants of symbolic computation packages have been developed on
top of the multi-processor STURM kernel.
Maintainer: Wolfgang Schreiner
Last Modification: March 11, 1997