PAWS (Parallel Application WorkSpace) is a software infrastructure for use in connecting separate parallel applications within a component-like model. A central PAWS Controller coordinates the linking of serial or parallel applications across a network to allow them to share parallel data structures such as multidimensional arrays.

PAWS components, written primarily in C++, may be scripted together with Tcl to allow user control of multiple applications, including their initialization, inter-connection, and termination.

Applications use the PAWS API to indicate which data structures are to be shared and at what points the data is ready to be sent or received. PAWS implements a general parallel data descriptor and automatically carries out parallel layout remapping when necessary. Connections can be dynamically established and dropped, and can use multiple data transfer pathways between applications.

Central to the design of PAWS is the coupling of parallel applications using parallel communication channels. The coupled applications can be running on different machines, and the data structures in each coupled component can have different parallel distributions. PAWS is able to carry out the communication without having to resort to global gather/scatter operations. Instead, point-to-point transfers are performed in which each node sends segments of data to remote nodes directly and in parallel.

The PAWS framework provides both an interface library for use in component applications and a PAWS "controller" that coordinates the interaction of components. The PAWS controller organizes and registers each of the applications participating in the framework. Through the controller, component applications ("tasks") register the data structures that should be shared with other components.

Tasks are created and connections are established between registered data structures via the Tcl script interface of the controller. The controller provides for dynamic data connection and disconnection, so that applications can be launched independently of both one another and the controller. PAWS supports C, C++, and Fortran interfaces for applications connecting to the PAWS framework.

PAWS provides basic data classes for data transfer, including arrays of arbitrary dimension which can be distributed in a broad range of patterns. It also allows for the transfer of user defined data types through the provision of function callbacks for data encoding and decoding on each end.

Source code: [L1 ]