ddc-core-flow-0.4.3.1: Disciplined Disciple Compiler data flow compiler.

Safe HaskellSafe
LanguageHaskell98

DDC.Core.Flow.Transform.Schedule

Contents

Synopsis

Documentation

scheduleScalar :: Process -> Either Error Procedure Source #

Schedule a process into a procedure, producing scalar code.

Scheduling process kernels

scheduleKernel :: Lifting -> Process -> Either Error Procedure Source #

Schedule a process kernel into a procedure.

A process kernel is a process with the following restricitions: 1) All input series have the same rate. 2) A kernel accumulates data into sinks, rather than allocating new values. 3) A kernel can be scheduled into a single loop.

data Error Source #

Reason a process kernel could not be scheduled into a procedure.

Constructors

ErrorNoRateParameters

Process has no rate parameters.

ErrorMultipleRates

Process has series of different rates, but all series must have the same rate.

ErrorPrimaryRateMismatch

Primary rate variable of the process does not match the rate of the paramter series.

ErrorCannotLiftExp (Exp () Name)

Cannot lift expression to vector operators.

ErrorCannotLiftType (Type Name)

Cannot lift type to vector type.

ErrorUnsupported Operator

Current scheduler does not support this operator.

ErrorMultipleFills

Multiple fills to the same output, in "interfering contexts" (eg same branch of an append)

ErrorSlurpError Error

Cannot slurp process description from one of the top-level declarations.

Instances

Show Error Source # 

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

Pretty Error Source # 

Associated Types

data PrettyMode Error :: * #

Methods

pprDefaultMode :: PrettyMode Error #

ppr :: Error -> Doc #

pprPrec :: Int -> Error -> Doc #

pprModePrec :: PrettyMode Error -> Int -> Error -> Doc #

data Lifting Source #

Lifting config controls how many elements should be processed per loop iteration.

Constructors

Lifting 

Fields