Safe Haskell | Safe-Infered |
---|

A monadic library to build dataflow graphs for OM.
This module just exports a set of chosen symbols
from `Internal`

.

- type Builder vector gauge anot val = State (BuilderState vector gauge anot) val
- data BuilderState vector gauge anot = BuilderState {}
- type BuilderOf r c = forall v g a. Builder v g a (Value r c)
- buildKernel :: Setup v g a -> Name -> Builder v g a () -> Kernel v g a
- load :: (TRealm r, Typeable c) => r -> c -> Name -> B (Value r c)
- store :: (TRealm r, Typeable c) => Name -> Builder v g a (Value r c) -> Builder v g a ()
- imm :: (TRealm r, Typeable c) => c -> B (Value r c)
- reduce :: Typeable c => Operator -> Builder v g a (Value TLocal c) -> Builder v g a (Value TGlobal c)
- broadcast :: Typeable c => Builder v g a (Value TGlobal c) -> Builder v g a (Value TLocal c)
- shift :: Typeable c => v g -> Builder v g a (Value TLocal c) -> Builder v g a (Value TLocal c)
- loadIndex :: Typeable c => c -> Axis v -> Builder v g a (Value TLocal c)
- loadSize :: (TRealm r, Typeable c) => r -> c -> Axis v -> Builder v g a (Value r c)
- annotate :: (TRealm r, Typeable c) => (a -> a) -> Builder v g a (Value r c) -> Builder v g a (Value r c)
- (<?>) :: (TRealm r, Typeable c) => (a -> a) -> Builder v g a (Value r c) -> Builder v g a (Value r c)
- withAnnotation :: (a -> a) -> Builder v g a ret -> Builder v g a ret

# Documentation

type Builder vector gauge anot val = State (BuilderState vector gauge anot) valSource

data BuilderState vector gauge anot Source

(Show anot, Show (vector gauge), Vector vector) => Show (BuilderState vector gauge anot) | |

Eq (Builder v g a ret) | |

(TRealm r, Typeable c, C c, Fractional c) => Fractional (Builder v g a (Value r c)) | you can convert GHC floating point immediates to |

(TRealm r, Typeable c, C c) => Num (Builder v g a (Value r c)) | you can convert GHC numeric immediates to |

Show (Builder v g a ret) | |

(TRealm r, Typeable c) => C (Builder v g a (Value r c)) | choose the larger or the smaller of the two. |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | Builder is Ring |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c) => C (Builder v g a (Value r c)) | |

(TRealm r, Typeable c, C c) => C (Builder v g a (Value r c)) | |

TRealm r => Boolean (Builder v g a (Value r Bool)) |

:: (TRealm r, Typeable c) | |

=> r | The |

-> c | The |

-> Name | The |

-> B (Value r c) |

Load from a static value.

:: (TRealm r, Typeable c) | |

=> Name | The |

-> Builder v g a (Value r c) | The |

-> Builder v g a () | The result. |

Store to a static value.

annotate :: (TRealm r, Typeable c) => (a -> a) -> Builder v g a (Value r c) -> Builder v g a (Value r c)Source

Execute the builder, and annotate the very result with the givin function.

(<?>) :: (TRealm r, Typeable c) => (a -> a) -> Builder v g a (Value r c) -> Builder v g a (Value r c)Source

(?) = annotate

withAnnotation :: (a -> a) -> Builder v g a ret -> Builder v g a retSource

Execute the builder under modifed annotation.