Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type TileM = ReaderT (Scope GPU) (State VNameSource)
- segMap1D :: String -> SegLevel -> ResultManifest -> (VName -> Binder GPU [SubExp]) -> Binder GPU [VName]
- segMap2D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp) -> ((VName, VName) -> Binder GPU [SubExp]) -> Binder GPU [VName]
- segMap3D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp, SubExp) -> ((VName, VName, VName) -> Binder GPU [SubExp]) -> Binder GPU [VName]
- segScatter2D :: String -> SubExp -> VName -> SegLevel -> (SubExp, SubExp) -> ((VName, VName) -> Binder GPU (SubExp, SubExp)) -> Binder GPU [VName]
- type VarianceTable = Map VName Names
- varianceInStms :: VarianceTable -> Stms GPU -> VarianceTable
- isTileableRedomap :: Stm GPU -> Maybe (SubExp, [VName], (Commutativity, Lambda GPU, [SubExp], Lambda GPU))
Documentation
segMap1D :: String -> SegLevel -> ResultManifest -> (VName -> Binder GPU [SubExp]) -> Binder GPU [VName] Source #
segMap2D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp) -> ((VName, VName) -> Binder GPU [SubExp]) -> Binder GPU [VName] Source #
segMap3D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp, SubExp) -> ((VName, VName, VName) -> Binder GPU [SubExp]) -> Binder GPU [VName] Source #
segScatter2D :: String -> SubExp -> VName -> SegLevel -> (SubExp, SubExp) -> ((VName, VName) -> Binder GPU (SubExp, SubExp)) -> Binder GPU [VName] Source #
type VarianceTable = Map VName Names Source #
The variance table keeps a mapping from a variable name
(something produced by a Stm
) to the kernel thread indices
that name depends on. If a variable is not present in this table,
that means it is bound outside the kernel (and so can be considered
invariant to all dimensions).
varianceInStms :: VarianceTable -> Stms GPU -> VarianceTable Source #