next up previous contents
Next: The CrOS Project Up: Communication Languages Previous: OREGAMI/LaRCS

The PCS Tool Chain

A somewhat similar approach is used in the Programmed Communication Service tool chain [28], developed as part of the iWarp effort. The authors share the opinion of the NuMesh project, that long-term communication connections can both be beneficial to performance as well as prove usable to programmers. PCS provides a semantics roughly equivalent to LaRCS, but its use with scheduled-routing hardware makes it more directly equivalent to COP. The PCS information is used to create scheduled paths within the hardware for faster communications at run-time.

They use an array program as their communication language. It defines connections between nodes and mappings from node programs to nodes. Figure 3.3 includes a sample array program. The array program sets up communication links at compile time, and the nodes' runtime program code uses those links. Ports are named with strings local to each node, and are converted to physical ports by runtime function calls. PCS allows for users to specify either, both, or neither of the communication paths and node placements. If the routing is not specified, it currently (as of the time of writing) defaults to a simple row-then-column technique to generate scheduled routes.


  
Figure 3.3: A simple PCS program
\begin{figure}
\begin{center}
{\sl Array program code (compile-time communicatio...
 ..._port(''in'');
 recv_msg(port, data);
 }\end{verbatim} }\end{center}\end{figure}

PCS supports a notion of phases similar to that of COP. A number of precompiled phases can be loaded at runtime, and the set_phase() function can be called to switch among them. As is true for COP (see Section 5.2), changing phases is not a trivial matter. PCS takes the relatively simple approach of performing a barrier before every phase switch to ensure that the network configuration is consistent across the system. While their motivation for phases was primarily to work around the limited number of communication streams in iWarp, they acknowledge that varying bandwidths on streams may also be advantageous as part of changing phases. As for LaRCS, PCS phases are fixed by the user rather than derived by the compiler.

The node and array programs are composed hierarchically, in a manner similar to Gabriel; this allows nodes to be hierarchically grouped together into different tasks in different phases. An additional notion of an overlay composition model allows PCS to achieve some of the same goals as COP's operator grouping hierarchy. With the overlay model, PCS allows the mesh to be subdivided along different hierarchical lines in each phase, thus adding a degree of flexibility to the phases.


next up previous contents
Next: The CrOS Project Up: Communication Languages Previous: OREGAMI/LaRCS
Back to Chris Metcalf's home page