next up previous contents
Next: Approaches to Data Dependency Up: Managing Data Dependency Previous: Managing Data Dependency

Operator Implementations

  This section examines the variety of techniques that can be used to implement operators. In Section 4.1.1 a set of techniques suitable for supporting data-dependent routing on a reprogrammable scheduled router is proposed; Section 4.1.2 looks at the different high-level ways that an implementation can be written to support a given operator's functionality.

The basic theory of supporting multiple implementations for an operator type is that it allows the compiler to pick the best one. This is particularly useful with a scheduled-routing substrate, but even with a dynamic-routing substrate, there are different ways of implementing the same functionality. The information provided by COP (such as message size, message count, and source and destination) allows the best implementation to be chosen. For example, the broadcast operator currently has three dynamic-routing implementations. One simple-minded implementation just writes the message sequentially to each destination; it is slow, but works with a run-time source and an arbitrary subset of the mesh. Another implementation requires a compile-time source and creates a broadcast tree in the mesh to forward the data. The third allows a run-time source, but requires a closely-packed subset; it propagates the data somewhat more slowly by sending it to all its neighbors in the mesh in a dimension-ordered flood fill. Depending on the mesh size, message size, and so forth, different implementations may prove to be most efficient in different contexts.



 
next up previous contents
Next: Approaches to Data Dependency Up: Managing Data Dependency Previous: Managing Data Dependency
Back to Chris Metcalf's home page