Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type TileM = ReaderT (Scope Kernels) (State VNameSource)
- segMap2D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp) -> ((VName, VName) -> Binder Kernels [SubExp]) -> Binder Kernels [VName]
- segMap3D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp, SubExp) -> ((VName, VName, VName) -> Binder Kernels [SubExp]) -> Binder Kernels [VName]
- segScatter2D :: String -> SubExp -> VName -> SegLevel -> (SubExp, SubExp) -> ((VName, VName) -> Binder Kernels (SubExp, SubExp)) -> Binder Kernels [VName]
- type VarianceTable = Map VName Names
- varianceInStms :: VarianceTable -> Stms Kernels -> VarianceTable
- isTileableRedomap :: Stm Kernels -> Maybe (SubExp, [VName], (Commutativity, Lambda Kernels, [SubExp], Lambda Kernels))
Documentation
segMap2D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp) -> ((VName, VName) -> Binder Kernels [SubExp]) -> Binder Kernels [VName] Source #
segMap3D :: String -> SegLevel -> ResultManifest -> (SubExp, SubExp, SubExp) -> ((VName, VName, VName) -> Binder Kernels [SubExp]) -> Binder Kernels [VName] Source #
segScatter2D :: String -> SubExp -> VName -> SegLevel -> (SubExp, SubExp) -> ((VName, VName) -> Binder Kernels (SubExp, SubExp)) -> Binder Kernels [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 Kernels -> VarianceTable Source #