Synergy Project Home Page

Home Installation Setup Concepts Programming Compiling Debugging Execution Architecture Conclusions References

 

Architecture
The Synergy architecture uses dynamic generation of application dependent and operating environment dependent(operating system and communication subsystem) IPC directives to form an optimized parallel processor using clusters of networked computers. It avoids the overhead of object brokers (or agents) while providing the de-coupling of data objects from parallel applications. It affords higher efficiency, scalability and reliability. Our current implementation supports only Unix machines of various favors.

Using the Stateless parallel programming principle, Synergy allows automatic formation of SIMD, MIMD and pipelined parallelisms for any given task.  

Programming using Synergy uses implicit parallelism. This means that the user composes parallel programs that are to communicate using a given set of primitives but NOT concerned with the number of possible processors.

It is only at runtime, the user needs to define the desired number of processors. The Synergy runtime environment automatically configures the multiple processors for the given task and arranges the most suitable SIMD, MIMD and piplelined processor formations for the given task.

Synergy unifies tuple space, message passing parallel programming styles and parallel file access using a Passive Object-Flow Programming (POFP) method. The object passiveness allows dynamic mapping of application programs onto any set of networked computers while keeping the IPC graph constant. POFP also allows a simple API that blends well into the sequential programming and object oriented programming styles. More interestingly, POFP allows parallel programming of parallel programs using Linda, PVM and Express. In other words, it subsumes the existing technologies.

Synergy V3.0 supports three passive data objects for program-to-program communication and synchronization:

· Tuple space (a FIFO ordered tuple data manager)
· Pipe (a generic location independent indirect message queue)
· File (a distributed file object supporting all Unix sequential file commands)

A passive data object is an object permitting only passive operations. An operation is considered passive if the object creating semantics is absent. All commonly known large data objects, such as databases, knowledge bases, hashed files, and ISAM files, can be passive objects provided the object creating operators are absent. The use of passive objects results in a static IPC graph for any parallel application. This is the basis for dynamic customization.

The use of passive objects also eases the parallel programming difficulties due to the lack of runtime program and data management tasks.  

In practice, POFP is very similar to conventional programming styles using a simple open-manipulate-close sequence for each passive object. Using POFP, an one-dimensional Coarse-To-Fine (CTF) decomposition method (see Adaptable Parallel Application Development section for details) can produce designs of modular parallel programs. The global view of the connected programs exhibits application dependent coarse grain SIMD, MIMD and pipeline potentials. The parallel programs can be developed and compiled independently.

Synergy’s API is largely static with deterministic parallel operations (if only blocking operations are used). Parallel binaries are hostless (as if they were sequential codes). This leaves rooms for both beginners and experienced parallel programmers to fully exploit the dynamically changing distributed resources.

Since POFP objects are intimately related to an application's specific partial-dataflows, the object service requirements are significantly reduced and simplified. For example, object memory requirements are reduced due to distributed deployment. Object content migration is automated -- data automatically moves to where it is needed. This "RISC" analogous feature enhances service efficiency as well as application's scalability.

Synergy V3.0 kernel includes the following elements:

a) A language injection library (LIL)
b) An application launching program (prun)
c) An application monitor and control program (pcheck)
d) A parallel program configuration processor (CONF)
e) A distributed application controller (DAC)
f) Two resident service daemons (PMD, CID)
g) Two dynamic object daemons (TSH, FAH)

The most immediate Synergy interface with a parallel programmer is the language injection library (LIL). It contains all passive operations that each program must use for communication and synchronization. LIL is linked to programs at compilation time to generate hostless binaries.

After making the parallel binaries and configuration specification, commands prun and pcheck are for running and monitoring multiple parallel applications. The prun command calls the parallel program configuration processor (CONF) to complete the program/object-to-processor binding according to a static host file and host availability at the time. It then activates DAC (Distributed Application Controller) which in turn launches necessary object daemons and then the entire parallel application. 

Pcheck can be considered as a parallel "ps" command in Unix. It monitors all parallel applications and keeps track of parallel processes of each application. Pcheck also allows a minimal set of management tasks such as killing running processes or applications.

There are two light weight service daemons for making remote processors available for personalized parallel processing:

Login-based command Interpreter Daemon (cid)
Host-based Port Mapper Daemon (pmd)

Cid provides automatic remote command execution functions for each user id. Thus, it is only to be run on those computers where the user has accounts.  Cid only "understands" a very limited set of commands for program activation and simple management functions. Pmd provides a "yellow page" service for locating local cid’s and objects. It should runs on every participating computer.

Using pmd and cid, Synergy V3.0 requires no root priviledged processes at all. Dependency on remote execution utilities, such as rsh and ssh, is limited only to daemon management tasks. All parallel programs run under the given login's credential imposing no security threat to the existing systems.

The object daemons are for passive object types. For the three supported types: tuple space, pipe and files, we saved the pipe daemon by implementing it directly in LIL. Thus, Synergy V3.0 has only two object daemons:

Tuple space handler (tsh)
File access handler (fah)

The object daemons are potentially resource hungry but they only "live" on the computers where they are needed and permitted. These daemons will disappear in the newer version of the stateless machine implementation.

The Synergy operating principles and the sub-system inter-relationship are described in the following section.

 

Copyright @1995-2005 Temple University.
For problems or questions regarding this web contact shi@temple.edu.
Last updated: March 06, 2004.