|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectptolemy.kernel.util.NamedObj
ptolemy.kernel.util.Attribute
ptolemy.actor.sched.Scheduler
ptolemy.domains.sdf.kernel.BaseSDFScheduler
ptolemy.domains.psdf.kernel.PSDFScheduler
public class PSDFScheduler
A scheduler that implements basic scheduling of PSDF graphs. PSDF scheduling is similar to SDF scheduling, EXCEPT:
1) Because parameter values may change, the solution to the balance equation is computed symbolically. i.e. the repetitions vector is a function of the parameter values.
2) Because the firing vector may change, the schedule determined by this class can only be a quasi-static, or parameterized schedule. Note that parameterized schedules cannot generally be constructed for models with feedback or with unconstrained parameter values.
This class uses a ConstVariableModelAnalysis to determine which scheduling parameters are constants and which may change during execution of the model. Rate parameters that can change are checked to ensure that their change context is not strictly contained by the model being scheduled. If this is the case, then the actor is not locally synchronous, and cannot be statically scheduled. Dynamic parameters with a valid changed context are treated symbolically when computing the repetitions vector.
After computing a schedule, this scheduler determines the external rate of each of the model's external ports. Since the firing vector is only computed symbolically, these rates can also only be computed symbolically. The dependence of these external rates on the rates of ports in the model is declared using a DependenceDeclaration. Higher level directors may use this dependence information to determine the change context of those rate variables and may refuse to schedule the composite actor if those rates imply that this model is not locally synchronous.
This scheduler uses a version of the P-APGAN scheduling algorithm described in [1].
[1] B. Bhattacharya and S. S. Bhattacharyya. Quasi-static scheduling of reconfigurable dataflow graphs for DSP systems. In Proceedings of the International Workshop on Rapid System Prototyping , pages 84-89, Paris, France, June 2000.
Scheduler
,
SampleDelay
,
SDFScheduler
,
Serialized Form
Red (neuendor) |
Red (neuendor) |
Nested Class Summary | |
---|---|
private class |
PSDFScheduler.ScheduleScope
|
private class |
PSDFScheduler.SymbolicFiring
An actor firing with an iteration count that is determined by a symbolic expression. |
private class |
PSDFScheduler.SymbolicSchedule
A schedule whose iteration count is given by an expression. |
private static interface |
PSDFScheduler.SymbolicScheduleElement
An interface for schedule elements whose iteration counts are in terms of symbolic expressions. |
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj |
---|
NamedObj.ContainedObjectsIterator |
Field Summary | |
---|---|
private java.util.HashMap |
_bufferSizeMap
|
private boolean |
_debugFlag
|
private ParserScope |
_parserScope
|
private ParseTreeEvaluator |
_parseTreeEvaluator
|
Fields inherited from class ptolemy.domains.sdf.kernel.BaseSDFScheduler |
---|
VERBOSE |
Fields inherited from class ptolemy.actor.sched.Scheduler |
---|
_DEFAULT_SCHEDULER_NAME |
Fields inherited from class ptolemy.kernel.util.NamedObj |
---|
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary | |
---|---|
PSDFScheduler()
Construct a scheduler with no container(director) in the default workspace, the name of the scheduler is "Scheduler". |
|
PSDFScheduler(Director container,
java.lang.String name)
Construct a scheduler in the given container with the given name. |
|
PSDFScheduler(Workspace workspace)
Construct a scheduler in the given workspace with the name "Scheduler". |
Method Summary | |
---|---|
private Token |
_evaluateExpressionInModelScope(ASTPtRootNode node)
|
private PSDFScheduler.SymbolicScheduleElement |
_expandAPGAN(mapss.dif.psdf.PSDFGraph graph,
Node node,
mapss.dif.psdf.PSDFAPGANStrategy strategy)
|
protected Schedule |
_getSchedule()
Return the parameterized scheduling sequence. |
private void |
_inferFiringCounts(PSDFScheduler.SymbolicScheduleElement element,
java.lang.String expression)
|
private void |
_init()
|
void |
declareRateDependency()
Declare the rate dependency on any external ports of the model. |
java.lang.String |
displayBufferSizes()
Return a string representation of the buffer sizes of the relations in the model. |
Methods inherited from class ptolemy.domains.sdf.kernel.BaseSDFScheduler |
---|
_declareDependency, _saveBufferSizes, _saveContainerRates, _saveFiringCounts |
Methods inherited from class ptolemy.actor.sched.Scheduler |
---|
clone, getSchedule, isValid, setContainer, setValid |
Methods inherited from class ptolemy.kernel.util.Attribute |
---|
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private java.util.HashMap _bufferSizeMap
private boolean _debugFlag
private ParseTreeEvaluator _parseTreeEvaluator
private ParserScope _parserScope
Constructor Detail |
---|
public PSDFScheduler() throws IllegalActionException, NameDuplicationException
IllegalActionException
- If the name has a period in it, or
the director is not compatible with the specified container.
NameDuplicationException
- If the container already contains
an entity with the specified name.public PSDFScheduler(Workspace workspace) throws IllegalActionException, NameDuplicationException
workspace
- Object for synchronization and version tracking.
IllegalActionException
- If the name has a period in it, or
the director is not compatible with the specified container.
NameDuplicationException
- If the container already contains
an entity with the specified name.public PSDFScheduler(Director container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container
- The container.name
- The name of this attribute.
IllegalActionException
- If the attribute is not of an
acceptable class for the container, or if the name contains a period.
NameDuplicationException
- If the name coincides with
an attribute already in the container.Method Detail |
---|
public void declareRateDependency() throws IllegalActionException
declareRateDependency
in class BaseSDFScheduler
IllegalActionException
- If there is a problem setting
the rate dependency on an external port.public java.lang.String displayBufferSizes()
protected Schedule _getSchedule() throws NotSchedulableException, IllegalActionException
_getSchedule
in class Scheduler
NotSchedulableException
- If a parameterized schedule
cannot be derived for the model.
IllegalActionException
- If the rate parameters
of the model are not correct, or the computed rates for
external ports are not correct.CompositeEntity.deepEntityList()
private Token _evaluateExpressionInModelScope(ASTPtRootNode node) throws IllegalActionException
IllegalActionException
private PSDFScheduler.SymbolicScheduleElement _expandAPGAN(mapss.dif.psdf.PSDFGraph graph, Node node, mapss.dif.psdf.PSDFAPGANStrategy strategy)
private void _inferFiringCounts(PSDFScheduler.SymbolicScheduleElement element, java.lang.String expression) throws IllegalActionException, NameDuplicationException
IllegalActionException
NameDuplicationException
private void _init()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |