The Prospero Resource Manager (PRM) enables users to run sequential or parallel applications on a network of workstations. Sequential jobs may be offloaded to lightly loaded processors while parallel jobs can make use of the collection of processors to achieve speedups. Parallel application programs are based on the message-passing model. Sequential programs need no modifications to run under PRM, while parallel programs are linked with a communication library that provides routines for sending and receiving tagged messages, broadcasting and global synchronization. This library exports two interfaces: a CMMD library interface (available to Connection Machine (CM-5) programmers) and a PVM interface (Version 3.3.5). These interfaces make it easy to use PRM as a platform for developing applications for the CM-5 or run PVM applications without having to modify any source code. PRM also supports terminal and file I/O activity by its tasks, such as keyboard input, printing to a terminal or access to files that may be on a filesystem not mounted by the host on which the task is running. Further, the components of an application may span multiple administrative domains and hardware platforms, without imposing the responsibility of mapping individual components to nodes on the user.
The end-user sees PRM application programs no differently than a sequential program executing on his or her workstation. Behind the scenes, PRM selects the processors on which the application will run, starts the application, supports communication between the tasks that make up the application, and directs input and output to and from the terminal and files on the user's workstation. At the application level, location transparency is achieved through dynamic address translation mechanisms that translate task identifiers to physical node addresses. PRM provides special I/O interfaces for terminal and file I/O, enabling a task to print to the terminal, accept keyboard input, or access files on remote filesystems.
PRM's resource allocation functions are distributed across three entities: the system manager, the job manager, and the node manager. The system manager controls access to a collection of processing resources and allocates them to jobs as requested by job managers. Large systems may employ multiple system managers, each managing a subset of resources. The job manager is the principal entity through which a job acquires processing resources to execute its tasks. The job manager acquires processor nodes from one or more system managers and initiates tasks on these nodes through the node manager. A node manager runs on each processor in the PRM environment. It initiates and monitors tasks on the node on which it is running.