Go up to Preparatory WorkGo forward to Computer-Supported Mathematical Education |

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