| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Futhark.Pass.ExtractKernels.BlockedKernel
Synopsis
- type DistLore lore = (Bindable lore, HasSegOp lore, BinderOps lore, LetDec lore ~ Type, ExpDec lore ~ (), BodyDec lore ~ ())
- type MkSegLevel lore m = [SubExp] -> String -> ThreadRecommendation -> BinderT lore m (SegOpLevel lore)
- data ThreadRecommendation
- segRed :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore)
- nonSegRed :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> m (Stms lore)
- segScan :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore)
- segHist :: (DistLore lore, MonadFreshNames m, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [(VName, SubExp)] -> [KernelInput] -> [HistOp lore] -> Lambda lore -> [VName] -> m (Stms lore)
- segMap :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore)
- mapKernel :: (DistLore lore, HasScope lore m, MonadFreshNames m) => MkSegLevel lore m -> [(VName, SubExp)] -> [KernelInput] -> [Type] -> KernelBody lore -> m (SegOp (SegOpLevel lore) lore, Stms lore)
- data KernelInput = KernelInput {}
- readKernelInput :: (DistLore (Lore m), MonadBinder m) => KernelInput -> m ()
- mkSegSpace :: MonadFreshNames m => [(VName, SubExp)] -> m SegSpace
- dummyDim :: (MonadFreshNames m, MonadBinder m, DistLore (Lore m)) => Pattern (Lore m) -> m (Pattern (Lore m), [(VName, SubExp)], m ())
Documentation
type DistLore lore = (Bindable lore, HasSegOp lore, BinderOps lore, LetDec lore ~ Type, ExpDec lore ~ (), BodyDec lore ~ ()) Source #
Constraints pertinent to performing distribution/flattening.
type MkSegLevel lore m = [SubExp] -> String -> ThreadRecommendation -> BinderT lore m (SegOpLevel lore) Source #
data ThreadRecommendation Source #
Constructors
| ManyThreads | |
| NoRecommendation SegVirt |
segRed :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore) Source #
nonSegRed :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> m (Stms lore) Source #
segScan :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> [SegBinOp lore] -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore) Source #
Arguments
| :: (DistLore lore, MonadFreshNames m, HasScope lore m) | |
| => SegOpLevel lore | |
| -> Pattern lore | |
| -> SubExp | |
| -> [(VName, SubExp)] | Segment indexes and sizes. |
| -> [KernelInput] | |
| -> [HistOp lore] | |
| -> Lambda lore | |
| -> [VName] | |
| -> m (Stms lore) |
segMap :: (MonadFreshNames m, DistLore lore, HasScope lore m) => SegOpLevel lore -> Pattern lore -> SubExp -> Lambda lore -> [VName] -> [(VName, SubExp)] -> [KernelInput] -> m (Stms lore) Source #
mapKernel :: (DistLore lore, HasScope lore m, MonadFreshNames m) => MkSegLevel lore m -> [(VName, SubExp)] -> [KernelInput] -> [Type] -> KernelBody lore -> m (SegOp (SegOpLevel lore) lore, Stms lore) Source #
data KernelInput Source #
Constructors
| KernelInput | |
Fields
| |
Instances
| Show KernelInput Source # | |
Defined in Futhark.Pass.ExtractKernels.BlockedKernel Methods showsPrec :: Int -> KernelInput -> ShowS # show :: KernelInput -> String # showList :: [KernelInput] -> ShowS # | |
readKernelInput :: (DistLore (Lore m), MonadBinder m) => KernelInput -> m () Source #
mkSegSpace :: MonadFreshNames m => [(VName, SubExp)] -> m SegSpace Source #