mapss.dif.csdf.sdf.sched
Class GDPPOStrategy

java.lang.Object
  extended by mapss.dif.DIFScheduleStrategy
      extended by mapss.dif.csdf.sdf.sched.DPPOStrategy
          extended by mapss.dif.csdf.sdf.sched.GDPPOStrategy
All Implemented Interfaces:
mocgraph.analysis.analyzer.Analyzer, mocgraph.analysis.analyzer.GraphAnalyzer, mocgraph.sched.ScheduleAnalyzer

public class GDPPOStrategy
extends DPPOStrategy

GDPPO stands for "Generalized Dynamic Programming Post Optimization". GDPPO aims at minimizing SDF communication buffer requirement with a given lexical order of actors. The order may be changed because of the available edge delays in cycles. For details, please reference "Software Synthesis from Dataflow Graphs" by Shuvra S. Bhattacharyya, Praveen K. Murthy, and Edward A. Lee ,1996.

Version:
$Id: GDPPOStrategy.java 406 2007-05-10 14:27:07Z plishker $
Author:
Mingyung Ko

Field Summary
 
Fields inherited from class mapss.dif.csdf.sdf.sched.DPPOStrategy
_lexicalOrder, _tableDimension
 
Fields inherited from class mapss.dif.DIFScheduleStrategy
_clusterManager
 
Constructor Summary
GDPPOStrategy(SDFGraph graph, java.util.List lexicalOrder)
          Constructor for a given graph and a lexical order.
 
Method Summary
protected  mocgraph.sched.ScheduleElement _computeSchedule(int left, int right, int repetition)
          Compute an SDF schedule from the GDPPO results.
protected  void _optimumFor(int left, int right)
          Compute the minimum cost for the node sequence from 'left' to 'right'.
 int bufferCost()
          Buffer cost for the result schedule.
 mocgraph.sched.Schedule schedule()
          Construct an SDF schedule from the GDPPO computation.
 java.lang.String toString()
          A desrciption of the scheduler.
 
Methods inherited from class mapss.dif.csdf.sdf.sched.DPPOStrategy
_bufferCost, _computeDPPO, _crossingSDFEdges, _DPPOTableElement, _SDFEdges, _SDFNodes, _verifyIndices, _verifyIndices, optimalCost, setLexicalOrder
 
Methods inherited from class mapss.dif.DIFScheduleStrategy
getClusterManager, graph, valid
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GDPPOStrategy

public GDPPOStrategy(SDFGraph graph,
                     java.util.List lexicalOrder)
Constructor for a given graph and a lexical order.

Parameters:
graph - The given SDF graph.
lexicalOrder - The lexical order in the form of List.
Method Detail

bufferCost

public int bufferCost()
Buffer cost for the result schedule.

Returns:
The buffer cost.

schedule

public mocgraph.sched.Schedule schedule()
Construct an SDF schedule from the GDPPO computation.

Specified by:
schedule in interface mocgraph.sched.ScheduleAnalyzer
Overrides:
schedule in class DPPOStrategy
Returns:
An SDF schedule.

toString

public java.lang.String toString()
A desrciption of the scheduler.

Specified by:
toString in interface mocgraph.analysis.analyzer.Analyzer
Overrides:
toString in class DPPOStrategy
Returns:
A text description.

_computeSchedule

protected mocgraph.sched.ScheduleElement _computeSchedule(int left,
                                                          int right,
                                                          int repetition)
Compute an SDF schedule from the GDPPO results. GDPPO schedules may be different from regular DPPO schedules due to possible reverse splits.

Overrides:
_computeSchedule in class DPPOStrategy
Parameters:
left - Lexical ordering index of the leftmost node.
right - Lexical ordering index of the rightmost node.
repetition - The repetition count of the node sequence.
Returns:
A schedule in mocgraph.sched representation.

_optimumFor

protected void _optimumFor(int left,
                           int right)
Compute the minimum cost for the node sequence from 'left' to 'right'. Also set up appropriate fields of the entry at (left, right)

Specified by:
_optimumFor in class DPPOStrategy
Parameters:
left - Lexical ordering index of the leftmost node.
right - Lexical ordering index of the rightmost node.