Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type MkSegLevel m = [SubExp] -> String -> ThreadRecommendation -> BinderT Kernels m SegLevel
- data ThreadRecommendation
- segRed :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> [SegRedOp Kernels] -> Lambda Kernels -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels)
- nonSegRed :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> [SegRedOp Kernels] -> Lambda Kernels -> [VName] -> m (Stms Kernels)
- segScan :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> Lambda Kernels -> Lambda Kernels -> [SubExp] -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels)
- segHist :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> [(VName, SubExp)] -> [KernelInput] -> [HistOp Kernels] -> Lambda Kernels -> [VName] -> m (Stms Kernels)
- segMap :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> Lambda Kernels -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels)
- streamRed :: (MonadFreshNames m, HasScope Kernels m) => Pattern Kernels -> SubExp -> Commutativity -> Lambda Kernels -> Lambda Kernels -> [SubExp] -> [VName] -> m (Stms Kernels)
- streamMap :: (MonadFreshNames m, HasScope Kernels m) => [String] -> [PatElem Kernels] -> SubExp -> Commutativity -> Lambda Kernels -> [SubExp] -> [VName] -> m ((SubExp, [VName]), Stms Kernels)
- mapKernel :: (HasScope Kernels m, MonadFreshNames m) => MkSegLevel m -> [(VName, SubExp)] -> [KernelInput] -> [Type] -> KernelBody Kernels -> m (SegOp Kernels, Stms Kernels)
- data KernelInput = KernelInput {}
- readKernelInput :: (MonadBinder m, Lore m ~ Kernels) => KernelInput -> m ()
- soacsLambdaToKernels :: Lambda SOACS -> Lambda Kernels
- soacsStmToKernels :: Stm SOACS -> Stm Kernels
- scopeForKernels :: Scope SOACS -> Scope Kernels
- scopeForSOACs :: Scope Kernels -> Scope SOACS
- getSize :: (MonadBinder m, Op (Lore m) ~ HostOp (Lore m) inner) => String -> SizeClass -> m SubExp
- segThread :: (MonadBinder m, Op (Lore m) ~ HostOp (Lore m) inner) => String -> m SegLevel
- segThreadCapped :: MonadFreshNames m => MkSegLevel m
- mkSegSpace :: MonadFreshNames m => [(VName, SubExp)] -> m SegSpace
Documentation
type MkSegLevel m = [SubExp] -> String -> ThreadRecommendation -> BinderT Kernels m SegLevel Source #
segRed :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> [SegRedOp Kernels] -> Lambda Kernels -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels) Source #
nonSegRed :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> [SegRedOp Kernels] -> Lambda Kernels -> [VName] -> m (Stms Kernels) Source #
segScan :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> Lambda Kernels -> Lambda Kernels -> [SubExp] -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels) Source #
segMap :: (MonadFreshNames m, HasScope Kernels m) => SegLevel -> Pattern Kernels -> SubExp -> Lambda Kernels -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms Kernels) Source #
streamRed :: (MonadFreshNames m, HasScope Kernels m) => Pattern Kernels -> SubExp -> Commutativity -> Lambda Kernels -> Lambda Kernels -> [SubExp] -> [VName] -> m (Stms Kernels) Source #
streamMap :: (MonadFreshNames m, HasScope Kernels m) => [String] -> [PatElem Kernels] -> SubExp -> Commutativity -> Lambda Kernels -> [SubExp] -> [VName] -> m ((SubExp, [VName]), Stms Kernels) Source #
mapKernel :: (HasScope Kernels m, MonadFreshNames m) => MkSegLevel m -> [(VName, SubExp)] -> [KernelInput] -> [Type] -> KernelBody Kernels -> m (SegOp Kernels, Stms Kernels) Source #
data KernelInput Source #
KernelInput | |
|
Instances
Show KernelInput Source # | |
Defined in Futhark.Pass.ExtractKernels.BlockedKernel showsPrec :: Int -> KernelInput -> ShowS # show :: KernelInput -> String # showList :: [KernelInput] -> ShowS # |
readKernelInput :: (MonadBinder m, Lore m ~ Kernels) => KernelInput -> m () Source #
getSize :: (MonadBinder m, Op (Lore m) ~ HostOp (Lore m) inner) => String -> SizeClass -> m SubExp Source #
segThreadCapped :: MonadFreshNames m => MkSegLevel m Source #
Like segThread
, but cap the thread count to the input size.
This is more efficient for small kernels, e.g. summing a small
array.
mkSegSpace :: MonadFreshNames m => [(VName, SubExp)] -> m SegSpace Source #