\"\" \"\" \"\"
Go up to Preparatory Work
Go forward to Computer-Supported Mathematical Education
RISC-Linz logo

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 [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 [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|| (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 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

\"\" \"\" \"\"