## A Manager for Distributed Mathematica Computations |

**Contact Person: Wolfgang Schreiner**

The goal of the project is to develop a system for distributing computations to Mathematica processes running on various machines of a network. The system consists of two kinds of processes:

- server processes each of which is connected to a Mathematica kernel offering computation capabilities;
- client processes each of which provides an interface giving the possibility to define computations which the client forwards to some server.

A set of servers runs on various machines of the network. The user starts a client that provides by a graphical user interface the following features:

- defining a new computation
- a computation is represented by a Mathematica expression in textual form to be evaluated;
- the result of a computation is associated to a symbolic name;
- the expression may refer to the results of other computations by their symbolic names;
- the computation may depend on additional code/libraries to be loaded into the Mathematica kernel before the expression can be evaluated;

- a list of already defined computations and their execution status, in particular: not ready (because it depends on some computation whose result is not yet available), ready but not yet exexecuting, executing on some denoted machine; terminated with a denoted result;
- a list of machines supposed to run server processes and their execution status, in particular: not responding, idle, executing an own computation, executing some computation of another user,
- managing computations (initializing from a file, adding, deleting, saving to a file),
- saving computation results to a file.

The client maintains a list of computations and a list of server machines and their respective status and associates computations to servers; if a server becomes unreachable, it is not given any new computations and running computations are rescheduled to other servers.

The server accepts computations from any client and forwards the computation to the associated Mathematica kernel which eventually returns the result.

The following programming languages and systems are suggested;

- Java for the client process; it is expected that the client process communicates via sockets with the server process;
- C/C++ for the server process; the server communicates via sockets with the client and via MathLink with the Mathematica kernel;
- Mathematica.

A test installation is to be provided with server processes running on at least two different environments of the RISC-Linz network (Solaris and Irix preferred). A demonstration of the system has to be prepared and documented such that it can be used by any member of RISC-Linz.

All results are to be documented and packaged such that the system can be easily installed and used. Documentation must be available in online form (HTML) and as a printable file (PostScript). A Web page is to be installed such that the system can be downloaded via the Internet.

Maintained by: Wolfgang Schreiner

Last Modification: February 4, 1998

[Up] [RISC-Linz] [University] [Search]