Go up to TopGo forward to 2 Examples |

This report describes the use of a system for writing distributed Maple applications and sketches its implementation. Maple is a popular computer algebra system for which a large number of application packages have been written [3]. In particular, the Maple library CASA of algorithms for solving problems in algebraic geometry has been developed in our institute [5]. Our goal is to provide an environment that makes it easy to implement parallel algorithms in Maple and that can be easily installed in any environment in order to facilitate the distribution of these implementations. We intend to use this system in order to parallelize a significant number of CASA algorithms.

Among several approaches to parallel programming with Maple, the most recent ones were the following:

- Wang implemented a parallel algorithm for computing characteristic sets by running a number of Maple kernels on different machines of a local network [6]; data communication was realized by a simple mechanism, the reading and writing of shared files in a global network file system.
- On the basis of the parallel declarative language Strand88, Siegl developed ||Maple|| (read: "Parallel Maple") [4]. Strand served as the coordinating system for connecting multiple Maple kernels such that expressions could be passed from Strand to Maple for evaluation. A parallel algorithm was thus implemented on two layers as a parallel Strand program calling sequential Maple functions.
- Diaz and Kaltofen have developed an interface between Maple and their FoxBox system that provides parallel implementations of polynomial factorization algorithms [1]. Thus a Maple user can connect to FoxBox and access its functionality (which has been implemented in C++ using the messing passing library MPI).

Our own goal is to provide an environment where parallel programming is
possible *within* Maple such that the mathematical programmer does not
have to leave the familiar environment of the computer algebra
system. Furthermore, the underlying technological basis should be
"time-safe" and accessible such that the resulting code can be easily
exchanged and used for a long time (Strand88 was only available in a few
places and its vendor is now out of business).

We have tackled this goal by developing a simple but easily configurable communication and scheduling program that may be used to start and connect external application programs on different machines. This program is written in Java and can be executed on any machine running some implementation of the Java Virtual Machine. We have written a small Maple package that implements an interface to the scheduler and provides a high-level parallel programming model.

Both the Java scheduler (compiled Java classes) and the Maple interface (Maple source code) are freely available under the GNU Library Public License at

http://www.risc.uni-linz.ac.at/software/distmaple

Maintainer: Wolfgang Schreiner

Last Modification: July 6, 2001