|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
Description
| Interface Summary | |
|---|---|
| FlatVisitor | Visitor interface to a graph of FlatNodes. |
| FlatWeight | Interface for a private class used in FlatWeights. |
| StreamGraphVisitor | Visitor interface for static stream sub-graphs of a stream graph. |
| Class Summary | |
|---|---|
| DataFlowTraversal | This class calculates a traversal of the graph where that guarantees that for each node n in the traversal, we have visited every node upstream of n. |
| DumpGraph | Dump a representation of the flat graph to a dot file to be used with dot (or dotty). |
| DumpSymbolicGraph | Dumps a symbolic representation of the flatgraph for interfacing to French collaborators for linear-programming scheduling algorithm. |
| FlatGraphToSIR | This class will convert the FlatGraph back to an SIR representation. |
| FlatNode | This class represents a node in the flattened graph. |
| FlatWeights | Need ability to itereate over FlatGraph edges that correspond with non-zero weight edges for splittes and joiners. |
| GraphFlattener | This class will create a graph of FlatNode
that represents the underlying SIR graph of the application. |
| ScheduledStaticStreamGraph | A StaticStreamGraph represents a subgraph of the application's StreamGraph where communication within the SSG is over static rate channels. |
| ScheduledStreamGraph | |
| SSGEdge | This class represents inter-SSG edges. |
| StaticStreamGraph | A representation of a portion of a FlatGraph where all comunication is static rate. |
| StreamGraph | A representation of a FlatGraph as a collection of StaticStreamGraph. |
| WorkSorted | |
FlatNode.contents and / or FlatNode.oldContents fields.
The constructed graph of FlatNodes, the "flat graph", will have
one node for each SIRFilter, SIRSplitter, and SIRJoiner in the SIR graph (except when --sync is
enabled), but there will exist no containers, FlatNodes directly
connect to/from their downstream/upstream nodes.
We create a graph of FlatNodes
that represents the underlying SIR graph of the application using
GraphFlattener
Each SIROperator will be converted to a FlatNode by GraphFlattener: SIRFilter into a FlatNode with at most one input/one output, SIRSplitter into a multiple output/one input, SIRJoiner into multiple input/one output.
If --sync is enabled, it will attempt to coalesce multiple splitters
or joiners into a single FlatNode.
Warning: In the presence of 0-weight edges in splitters or joiners,
there will not be a 1-1 correspondence between offsets in the weights
arrays of the splitters and joiners and the nodes vector in a FlatNode.
Use the FlatWeights to iterate if you need weight information
from a splitter / joiner and corresponding edge from a FlatNode.
Stream Graph is a graph of static-rate stream subgraphs, "SSG"s.
Each SSG is a single-input, single-output graph represented internally as a graph of FlatNode s.
The Stream Graph is a graph of SSG's.
Any original dynamic-rate edges in the original SIR graph are removed from the SSGs: They are remembered as SSGEdges.
A dynamic rate edge is expected to occur only between filters, but there is as yet no graph transformation to ensure that
this is the case.
Filters connecting to a dynamic edge are given I/O rates of 0 for that edge, and a input / output type of Void for that edge.
If there is more than one input (resp. output) filter with a disconnected from a dynamic edge, then the single input / single output
property of the SSG is maintained by introducing a splitter (resp. joiner) with 0-weight edges.
Create a StreamGraph as
StreamGraph streamGraph = new StreamGraph((new GraphFlattener(str)).top);
streamGraph.createStaticStreamGraphs();
After using SSGs, you can recreate the SIR graph, or continue to use a FlatNode representation:
str = streamGraph.recreateSIR();
FlatNode strTop = streamGraph.getTopLevel().getTopLevel();
There is a visitor interface defined to visit SSGs: StreamGraph.
There is a ScheduledStaticStreamGraph subclass of SSGs that will provide a map from FlatNode to Integer for a
single-appearance schedule. (It turns out that SIROperator to Integer would have been better since the setTopLevelSIR operation
a SSG re-creates all the FlatNodes and thus invalidates any previous scheduling information.)
The advantage of SSGs is that scheduling and partitioning do not need to be enhanced to deal with dynamic-rate edges. The disadvantage is in determining the quirks, and maintaining the SSG representation: it should eventually be discontinued in favor of enhancing the scheduler and partitioners to deal with dynamic-rate edges.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||