Safe Haskell | Safe-Infered |
---|
the components for constructing Orthotope Machine data flow draph. Most components take three arguments:
vector :: * -> *
- The array dimension. It is a
Vector
that defines the dimension of the Orthotope on which the OM operates. gauge :: *
- The array index. The combination
vector gauge
needs to be an instance ofC
if you want to performShift
operation. anot :: *
- The annotations put on each node. If you want to use
Annotation,
anot
needs to be an instance ofMonoid
.
- data Setup vector gauge anot = Setup {
- staticValues :: Vector (Named DynValue)
- globalAnnotation :: anot
- data Kernel vector gauge anot = Kernel {
- kernelName :: Name
- dataflow :: Graph vector gauge anot
- type Graph vector gauge anot = Gr (Node vector gauge anot) Edge
- nmap :: (a -> b) -> Graph v g a -> Graph v g b
- imap :: (Node -> a -> b) -> Graph v g a -> Graph v g b
- getA :: Node v g a -> a
- data Node vector gauge anot
- data Edge
- newtype StaticIdx = StaticIdx {
- fromStaticIdx :: Int
- data Inst vector gauge
Documentation
data Setup vector gauge anot Source
An OM Setup, a set of information needed before you start building a Kernel
.
Setup | |
|
data Kernel vector gauge anot Source
A Kernel
for OM perfor a block of calculations on OM.
Kernel | |
|
type Graph vector gauge anot = Gr (Node vector gauge anot) EdgeSource
The dataflow graph for Orthotope Machine. anot is an additional annotation.
imap :: (Node -> a -> b) -> Graph v g a -> Graph v g bSource
Map the Graph
annotation from one type to another, while referring to the node indices.
data Node vector gauge anot Source
The Node
for the dataflow Graph
of the Orthotope machine.
The dataflow graph is a 2-part graph consisting of NValue
and NInst
nodes.
NValue DynValue anot | A value node. An |
NInst (Inst vector gauge) anot | An instruction node. An |