futhark-0.20.0: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

Futhark.Pass.ExtractKernels.DistributeNests

Documentation

histKernel :: (MonadBinder m, DistLore (Lore m)) => (Lambda SOACS -> m (Lambda (Lore m))) -> SegOpLevel (Lore m) -> PatternT Type -> [(VName, SubExp)] -> [KernelInput] -> Certificates -> SubExp -> [HistOp SOACS] -> Lambda (Lore m) -> [VName] -> m (Stms (Lore m)) Source #

data DistEnv lore m Source #

Constructors

DistEnv 

Fields

Instances

Instances details
Monad m => MonadReader (DistEnv lore m) (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

ask :: DistNestT lore m (DistEnv lore m) #

local :: (DistEnv lore m -> DistEnv lore m) -> DistNestT lore m a -> DistNestT lore m a #

reader :: (DistEnv lore m -> a) -> DistNestT lore m a #

data DistAcc lore Source #

Constructors

DistAcc 

Fields

runDistNestT :: (MonadLogger m, DistLore lore) => DistEnv lore m -> DistNestT lore m (DistAcc lore) -> m (Stms lore) Source #

data DistNestT lore m a Source #

Instances

Instances details
(Monad m, ASTLore lore) => LocalScope lore (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

localScope :: Scope lore -> DistNestT lore m a -> DistNestT lore m a Source #

(Monad m, ASTLore lore) => HasScope lore (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

lookupType :: VName -> DistNestT lore m Type Source #

lookupInfo :: VName -> DistNestT lore m (NameInfo lore) Source #

askScope :: DistNestT lore m (Scope lore) Source #

asksScope :: (Scope lore -> a) -> DistNestT lore m a Source #

Monad m => Monad (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

(>>=) :: DistNestT lore m a -> (a -> DistNestT lore m b) -> DistNestT lore m b #

(>>) :: DistNestT lore m a -> DistNestT lore m b -> DistNestT lore m b #

return :: a -> DistNestT lore m a #

Functor m => Functor (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

fmap :: (a -> b) -> DistNestT lore m a -> DistNestT lore m b #

(<$) :: a -> DistNestT lore m b -> DistNestT lore m a #

Applicative m => Applicative (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

pure :: a -> DistNestT lore m a #

(<*>) :: DistNestT lore m (a -> b) -> DistNestT lore m a -> DistNestT lore m b #

liftA2 :: (a -> b -> c) -> DistNestT lore m a -> DistNestT lore m b -> DistNestT lore m c #

(*>) :: DistNestT lore m a -> DistNestT lore m b -> DistNestT lore m b #

(<*) :: DistNestT lore m a -> DistNestT lore m b -> DistNestT lore m a #

Monad m => MonadLogger (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

logMsg :: ToLog a => a -> DistNestT lore m () Source #

addLog :: Log -> DistNestT lore m () Source #

MonadFreshNames m => MonadFreshNames (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Monad m => MonadReader (DistEnv lore m) (DistNestT lore m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

ask :: DistNestT lore m (DistEnv lore m) #

local :: (DistEnv lore m -> DistEnv lore m) -> DistNestT lore m a -> DistNestT lore m a #

reader :: (DistEnv lore m -> a) -> DistNestT lore m a #

liftInner :: (LocalScope lore m, DistLore lore) => m a -> DistNestT lore m a Source #

distributeMap :: (MonadFreshNames m, LocalScope lore m, DistLore lore) => MapLoop -> DistAcc lore -> DistNestT lore m (DistAcc lore) Source #

distribute :: (MonadFreshNames m, LocalScope lore m, DistLore lore) => DistAcc lore -> DistNestT lore m (DistAcc lore) Source #

distributeSingleStm :: (MonadFreshNames m, LocalScope lore m, DistLore lore) => DistAcc lore -> Stm SOACS -> DistNestT lore m (Maybe (PostStms lore, Result, KernelNest, DistAcc lore)) Source #

addStmsToAcc :: Stms lore -> DistAcc lore -> DistAcc lore Source #

addStmToAcc :: (MonadFreshNames m, DistLore lore) => Stm SOACS -> DistAcc lore -> DistNestT lore m (DistAcc lore) Source #

addPostStms :: Monad m => PostStms lore -> DistNestT lore m () Source #

postStm :: Monad m => Stms lore -> DistNestT lore m () Source #

inNesting :: (Monad m, DistLore lore) => KernelNest -> DistNestT lore m a -> DistNestT lore m a Source #