at.dms.kjc.sir.linear.transform
Class LinearTransformSplitJoin

java.lang.Object
  extended by at.dms.kjc.sir.linear.transform.LinearTransform
      extended by at.dms.kjc.sir.linear.transform.LinearTransformSplitJoin

public class LinearTransformSplitJoin
extends LinearTransform

Contains the code for merging all the filters from a split join into a single monolithic matrix. See the pldi-03-linear paper or Andrew's thesis for more information.
$Id: LinearTransformSplitJoin.java,v 1.9 2006/09/25 13:54:42 dimock Exp $


Method Summary
static LinearTransform calculateDuplicate(List<LinearFilterRepresentation> representationList, int[] joinerWeights)
          Calculate the necessary information to combine the splitjoin when the splitter is a duplicate.
static int getMaxPeek(LinearFilterRepresentation[] filterReps, int[] filterFirings)
          Calculates the maxmum peek rate (o_i * firings + e_i - o_i) for all of the filters.
static LinearFilterRepresentation[] parseRepList(List<LinearFilterRepresentation> representationList)
          Utility method.
 LinearFilterRepresentation transform()
          Implement the actual transformation for a duplicate splitter splitjoin construct.
 
Methods inherited from class at.dms.kjc.sir.linear.transform.LinearTransform
divCeiling, gcd, gcd, lcm, lcm
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

transform

public LinearFilterRepresentation transform()
                                     throws NoTransformPossibleException
Implement the actual transformation for a duplicate splitter splitjoin construct. This involves expanding all of the representations by the specified factors and then copying the columns of the expanded matricies into a new linear transform in the correct order.

Specified by:
transform in class LinearTransform
Throws:
NoTransformPossibleException

parseRepList

public static LinearFilterRepresentation[] parseRepList(List<LinearFilterRepresentation> representationList)
Utility method. Parses a List of LinearFilter representations into an array of of LinearFilterRepresentations.


calculateDuplicate

public static LinearTransform calculateDuplicate(List<LinearFilterRepresentation> representationList,
                                                 int[] joinerWeights)
Calculate the necessary information to combine the splitjoin when the splitter is a duplicate. See thesis (http://cag.lcs.mit.edu/commit/papers/03/pldi-linear.pdf) for an explanation of what is going on and why the expansion factors are chosen the way that they are.
The input is a List of LinearFilterRepresentations and a matching array of joiner weights. Note that this method merely calls the other calculateDuplicate so that I can reuse code in calculateRoundRobin...


getMaxPeek

public static int getMaxPeek(LinearFilterRepresentation[] filterReps,
                             int[] filterFirings)
Calculates the maxmum peek rate (o_i * firings + e_i - o_i) for all of the filters.