The parallel programming community has long recognized the need for a programming environment offering interprocess communication between heterogeneous systems. PVM is arguably the most successful message passing environment, providing an architecture independent parallel programming environment on a variety of platforms - high-speed bus based multiprocessors, shared memory multiprocessors, and local area network-based workstation clusters.
PVM uses only generally available computing resources, such as Berkeley-derived sockets for interprocess communication and remote shell commands for process invocation, and makes no demands of privileged services on either the local host or between multiple hosts. When used by a large community of users, however, it is the very non-privileged nature of PVM that increases its overall demands on operating system resources. Each user must initiate and control the execution of their own private PVM daemons on each of the hosts on which their parallel programs are to run. In a large community, this results in possibly hundreds of additional processes.
Our motivation is to reduce the total operating system resource requirements when multiple users are using PVM in a workstation cluster environment. Whereas the traditional PVM implementation requires each user to run and communicate through their own set of daemon processes, one per machine, our goal to to have only one PVM daemon per machine for a whole collection of users. This modified environment provides reduced operating system resource requirements, and reduced application execution times, in an environment such as a University using PVM in its teaching or research. In particular, a teaching environment in which PVM is either used ``directly'' from application programs written in C or FORTRAN, or as a ``parallel assembly language'', often requires some robustness. Our modified PVM environment increases the overall robustness of a PVM teaching environment by being ``self-starting'' and enabling selected users to administer the environment by configuring hosts, users and tasks.