previous up next
Go backward to Programming Interface
Go up to Distributed Maple
RISC-Linz logo

Software Architecture

The core of Distributed Maple is a scheduler program which is implemented in Java (package dist with main class Scheduler) and is completely independent and even unaware of Maple; it can in fact embed and schedule tasks from any kind of computation kernels that implement a specific communication protocol. Correspondingly each node connected to a Distributed Maple session comprises two components (see Figure *):

Scheduler

This program coordinates the interaction between nodes and schedules tasks among nodes. The initial scheduler process (invoked from the Maple kernel attached to the user frontend) reads all application-specific information from the configuration file dist.systems; it then starts instances of the scheduler on other machines and communicates with them via Internet sockets.

Maple Interface

The Maple file dist.maple read by every Maple kernel implements the interface between Maple kernel and scheduler. Communication between both components is based on Unix pipes to which and from which messages are written; these messages may embed Maple expressions (in the compact linear format that Maple uses for library files).

After a distributed session has been established, every scheduler instance accepts tasks from the attached computation kernel and schedules these tasks among all machines connected to the session. A task is a pair (taskid, exp) where taskid is an integer identifying the task and exp is an uninterpreted string to be submitted to some kernel for evaluation. Initially, every scheduler informs its kernel about the range of task identifiers it may use for assignment to new tasks such that all kernels in the system can independently create new tasks. Each instance of the scheduler holds a local task queue, a result table, and a result cache; their function is explained below.
Maintained by: Wolfgang Schreiner
Last Modification: April 22, 1999

previous up next