Class PSDFScheduler

  • All Implemented Interfaces:
    java.lang.Cloneable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class PSDFScheduler
    extends BaseSDFScheduler
    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.

    Since:
    Ptolemy II 3.1
    Version:
    $Id$
    Author:
    Stephen Neuendorffer, Shuvra S. Bhattacharyya
    See Also:
    Scheduler, SampleDelay, SDFScheduler
    Pt.AcceptedRating:
    Red (neuendor)
    Pt.ProposedRating:
    Red (neuendor)
    • Constructor Detail

      • PSDFScheduler

        public PSDFScheduler​(Workspace workspace)
                      throws IllegalActionException,
                             NameDuplicationException
        Construct a scheduler in the given workspace with the name "Scheduler". If the workspace argument is null, use the default workspace. The scheduler is added to the list of objects in the workspace. Increment the version number of the workspace.
        Parameters:
        workspace - Object for synchronization and version tracking.
        Throws:
        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.
      • PSDFScheduler

        public PSDFScheduler​(Director container,
                             java.lang.String name)
                      throws IllegalActionException,
                             NameDuplicationException
        Construct a scheduler in the given container with the given name. The container argument must not be null, or a NullPointerException will be thrown. This attribute will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. Increment the version of the workspace.
        Parameters:
        container - The container.
        name - The name of this attribute.
        Throws:
        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

      • displayBufferSizes

        public java.lang.String displayBufferSizes()
        Return a string representation of the buffer sizes of the relations in the model. This diagnostic method shows the buffer size expression for each relation along with the relation itself.
        Returns:
        A string representation of the buffer sizes.