Next: Chaos and PARTI
Up: Communication Languages
Previous: The PCS Tool Chain
The CrOS project from CalTech [24] uses a
crystalline programming framework. The authors present an MIMD model
with nodes calling library functions
to communicate with each other. The CrOS target hardware did not have a
separate router, and accordingly the processors themselves performed the
communication over dedicated point-to-point links. Their loosely
synchronous model requires that a node cannot write to another node
unless the destination node is prepared to receive the message;
similar in spirit, at the processor level, to scheduled routing.
Since CrOS was purely run-time, they did not support any notion of
phases, or any distinction between compile-time and run-time values.
Figure 3.4:
CrOS code for a parallel prefix
 |
However, CrOS does include a notion of operators
similar to that used in COP. In addition to
simple stream-style connections, they include primitives for doing
transpose and various other array-style communications. A fragment of
a simple sum-of-squares program is presented in Figure 3.4;
the vm_combine() function is a CrOS operator that does a
parallel prefix, or scan, across the nodes in the machine.
CrOS supports a version of online routing called the
crystal_router, which handles online routing in a manner similar
to that used by COP. Without the ability to extract information at
compile-time, however, they do an `inspector'-style step where routing
information is collected in the first phase, then subsequent phases
use the collected information to avoid having to examine all possible
streams for input.
Next: Chaos and PARTI
Up: Communication Languages
Previous: The PCS Tool Chain
Back to Chris Metcalf's home page