|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectat.dms.kjc.sir.lowering.partition.RefactorSplitJoin
public class RefactorSplitJoin
Constructor Summary | |
---|---|
RefactorSplitJoin()
|
Method Summary | |
---|---|
static SIRStream |
addDeepRectangularSyncPoints(SIRStream str)
Returns new version of |
static SIRSplitJoin |
addHierarchicalChildren(SIRSplitJoin sj,
PartitionGroup partition)
Given a splitjoin |
static SIRPipeline |
addSyncPoints(SIRSplitJoin sj,
PartitionGroup partition)
Given that all of the children of |
static SIRStream |
convertToPipeline(SIRSplitJoin sj)
Converts |
static boolean |
raiseSJChildren(SIRSplitJoin sj)
Raises as many children of |
static boolean |
removeMatchingSyncPoints(SIRPipeline pipe)
Does the opposite transformation of |
static boolean |
removeSyncPoints(SIRPipeline pipe)
Removes all sync points that it can in a structued way in |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public RefactorSplitJoin()
Method Detail |
---|
public static SIRStream convertToPipeline(SIRSplitJoin sj)
sjto a pipeline, where the left-most children of the
sjare the top-most elements of the pipeline. Initial input is passed through so that lower stages of the pipe can operate on it. Only works on splitjoins that have filters for children, that these filters have an integral pop/push ratio (this could possibly be lifted with more clever scheduling) and that have the same input and output type. Otherwise this returns the original
sj. Note that this is an immutable method -- does not modify
sjor its parent.
public static SIRSplitJoin addHierarchicalChildren(SIRSplitJoin sj, PartitionGroup partition)
sjand a partitioning
partitionof its children, returns a new splitjoin with each partition factored into its own child splitjoin. Note that this is an immutable method -- does not modify
sjor its parent.
public static SIRStream addDeepRectangularSyncPoints(SIRStream str)
strinto one in which all splitjoins contained in any children are made rectangular and have synchronization after each child. Also mutates
str.
public static SIRPipeline addSyncPoints(SIRSplitJoin sj, PartitionGroup partition)
sjare pipelines and that
partitiondescribes a partitioning for such a pipeline, re-arrange
sjinto a pipeline of several splitjoins, each of which has children corresponding to a segment of
partition: | | . . / | \ / | \ | | | | | | | | | ===> \ | / | | | . \ | / / | \ . | | | | \ | / | . Note that this is an immutable method -- does not modify
sjor its parent.
public static boolean removeSyncPoints(SIRPipeline pipe)
pipe. Note that this might INCREASE the tile count because more joiners are introduced into the graph. If this is not desired, use only removeMatchingSyncPoints (below). Note that this method MUTATES its argument.
public static boolean removeMatchingSyncPoints(SIRPipeline pipe)
addSyncPointsabove. If any two adjacent children in
pipeare splitjoins where the weights of the upstream joiner exactly match the weights of the downstream joiner, then the splitjoins can be combined into a single splitjoin. If this is the case, then
pipeis mutated. This is intended only as a reverse routine for the above sync. addition. In particular, it doesn't deal with duplicate splitters or 1-way splitters, and it doesn't attempt to "duplicate" or "unroll" whole streams in order for synchronization to match up. This guarantees that the tile count is not increased by the procedure. Returns whether or not any change was made. Note that this method MUTATES its argument.
public static boolean raiseSJChildren(SIRSplitJoin sj)
sjas it can into
sj, using helper functions below. Note that this method MUTATES its argument.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |