next up previous contents
Next: Continuing Online-Routing Operators Up: Continuing Operators Previous: Simple Continuation

Continuation to Multiple Phases

The situation is more complicated if the operator continues into a part of the application with multiple threads of control. In this case (as discussed in Section 2.4.3), there may be multiple simultaneous phases with disjoint spatial extents. In this case a somewhat more restrictive solution is required. For example, consider the case where the stdin operator starts in a phase with some setup operators, then continues to a phase where portions of the mesh are independently running through a several-phase loop:


\begin{singlespace}
\begin{verbatim}
(parallel
 (broadcast 'stdin 0)
 (sequentia...
 ...esh
 (loop OP OP OP ...)))) ; right side of mesh\end{verbatim} \end{singlespace}

Since the stdin operator is global, but portions of its path may be in different phases at the same time, it is necessary to reuse not just the VFSMs but their exact scheduling as well. The precise set of schedule timeslots for the stream form an `interface' that all the phases must adhere to so that the continuing operator can run seamlessly despite any changing phases. Thus, the stream router is given not just a list of VFSMs to reuse, but a list of VFSMs and schedule slots to reuse.

While this is necessary for correct operation in the disjoint-phase case, it is not used by default. It requires the operator to have a fixed bandwidth from phase to phase, and it also makes the remaining operators harder to schedule, since they must work around fixed `obstacles' in the schedule where the continuing operator(s) have been nailed down.


next up previous contents
Next: Continuing Online-Routing Operators Up: Continuing Operators Previous: Simple Continuation
Back to Chris Metcalf's home page