A monadic library to build dataflow graphs for OM. Builder is only for Graph vector gauge () . Graphs with other annotation types can be created by fmap. This module exports everything, for writing other Builder modules.
- type Builder vector gauge val = State (BuilderState vector gauge) val
- data BuilderState vector gauge = BuilderState {}
- type B a = (Vector v, C g) => Builder v g a
- type BuilderOf r c = (Vector v, C g) => Builder v g (Value r c)
- makeKernel :: (Vector v, C g) => Setup v g -> Name -> Builder v g () -> Kernel v g ()
- initState :: Setup v g -> BuilderState v g
- modifyG :: (Vector v, C g) => (Graph v g () -> Graph v g ()) -> Builder v g ()
- getG :: (Vector v, C g) => Builder v g (Graph v g ())
- freeNode :: B Node
- addNode :: (Vector v, C g) => [Node] -> Node v g () -> Builder v g Node
- valueToNode :: (TRealm r, Typeable c) => Value r c -> B Node
- lookUpStatic :: Named DynValue -> B ()
- load :: (TRealm r, Typeable c) => r -> c -> Name -> B (Value r c)
- store :: (Vector v, C g, TRealm r, Typeable c) => Name -> Builder v g (Value r c) -> Builder v g ()
- reduce :: (Vector v, C g, Typeable c) => Operator -> Builder v g (Value TLocal c) -> Builder v g (Value TGlobal c)
- broadcast :: (Vector v, C g, Typeable c) => Builder v g (Value TGlobal c) -> Builder v g (Value TLocal c)
- shift :: (Vector v, C g, Typeable c, C (v g)) => v g -> Builder v g (Value TLocal c) -> Builder v g (Value TLocal c)
- loadIndex :: (Vector v, C g, Typeable c) => c -> Axis v -> Builder v g (Value TLocal c)
- imm :: (TRealm r, Typeable c) => c -> B (Value r c)
- mkOp1 :: (Vector v, C g, TRealm r, Typeable c) => Operator -> Builder v g (Value r c) -> Builder v g (Value r c)
- mkOp2 :: (Vector v, C g, TRealm r, Typeable c) => Operator -> Builder v g (Value r c) -> Builder v g (Value r c) -> Builder v g (Value r c)
Documentation
type Builder vector gauge val = State (BuilderState vector gauge) valSource
data BuilderState vector gauge Source
(Show (vector gauge), C gauge, Vector vector) => Show (BuilderState vector gauge) | |
Eq (Builder v g v2) | |
(Vector v, C g, TRealm r, Typeable c, C c, Fractional c) => Fractional (Builder v g (Value r c)) | you can convert GHC floating point immediates to |
(Vector v, C g, TRealm r, Typeable c, C c) => Num (Builder v g (Value r c)) | you can convert GHC numeric immediates to |
Show (Builder v g v2) | |
(Vector v, C g, TRealm r, Typeable c) => C (Builder v g (Value r c)) | choose the larger or the smaller of the two. |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r, Typeable c, C c) => C (Builder v g (Value r c)) | |
(Vector v, C g, TRealm r) => Boolean (Builder v g (Value r Bool)) |
initState :: Setup v g -> BuilderState v gSource
:: (Vector v, C g) | |
=> (Graph v g () -> Graph v g ()) | The graph modifying function. |
-> Builder v g () | The state gets silently modified. |
Modify the dataflow graph stored in the Builder
.
:: (Vector v, C g) | |
=> [Node] | The list of dependent nodes. The order is recorded. |
-> Node v g () | The new node to be added |
-> Builder v g Node |
add a node to the graph.
lookUpStatic :: Named DynValue -> B ()Source
look up the Named
DynValue
with the correct name and type
is included in the staticValues
of the BuilderState
:: (TRealm r, Typeable c) | |
=> r | The |
-> c | The |
-> Name | The |
-> B (Value r c) |
Load from a static value.
:: (Vector v, C g, TRealm r, Typeable c) | |
=> Name | The |
-> Builder v g (Value r c) | The |
-> Builder v g () | The result. |
Store to a static value.