futhark-0.25.21: An optimising compiler for a functional, array-oriented language.
Safe HaskellSafe-Inferred
LanguageGHC2021

Futhark.Pass.ExtractKernels.DistributeNests

Documentation

data MapLoop Source #

Constructors

MapLoop (Pat Type) (StmAux ()) SubExp (Lambda SOACS) [VName] 

histKernel :: (MonadBuilder m, DistRep (Rep m)) => (Lambda SOACS -> m (Lambda (Rep m))) -> SegOpLevel (Rep m) -> Pat Type -> [(VName, SubExp)] -> [KernelInput] -> Certs -> SubExp -> [HistOp SOACS] -> Lambda (Rep m) -> [VName] -> m (Stms (Rep m)) Source #

data DistEnv rep m Source #

Constructors

DistEnv 

Instances

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

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

data DistAcc rep Source #

Constructors

DistAcc 

Fields

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

data DistNestT rep m a Source #

Instances

Instances details
(Monad m, ASTRep rep) => HasScope rep (DistNestT rep m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

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

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

(Monad m, ASTRep rep) => LocalScope rep (DistNestT rep m) Source # 
Instance details

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

pure :: a -> DistNestT rep m a #

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

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

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

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

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

return :: a -> DistNestT rep m a #

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

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

Defined in Futhark.Pass.ExtractKernels.DistributeNests

Methods

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

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

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

liftInner :: (LocalScope rep m, DistRep rep) => m a -> DistNestT rep m a Source #

distribute :: (MonadFreshNames m, LocalScope rep m, DistRep rep) => DistAcc rep -> DistNestT rep m (DistAcc rep) Source #

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

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

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

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

inNesting :: (Monad m, DistRep rep) => KernelNest -> DistNestT rep m a -> DistNestT rep m a Source #