accelerate-utility-0.1.1: Utility functions for the Accelerate framework

Safe HaskellNone
LanguageHaskell98

Data.Array.Accelerate.Utility.Lift.Run

Description

Simplify running accelerate functions with multiple curried array and expression arguments.

Synopsis

Documentation

class C f where Source

If you have a function:

f :: Exp a -> (Acc b, Acc c) -> (Acc d, Acc e)

you cannot run this immediately using run1, since run1 expects a function with a single Acc parameter and a single Acc result. Using the with function you can just run f as is:

with run1 f :: a -> (b,c) -> (d,e)

Associated Types

type Arguments a f Source

type Result f Source

type Plain f Source

Methods

with1 :: Arrays a => ((Acc (Arguments a f) -> Acc (Result f)) -> Arguments a f -> Result f) -> (Acc a -> f) -> a -> Plain f Source

Instances

C (Acc r) 
(Argument arg, C f) => C (arg -> f) 
(Lift Acc r, Arrays (Plain r), Lift Acc s, Arrays (Plain s)) => C (r, s) 
(Lift Acc r, Arrays (Plain r), Lift Acc s, Arrays (Plain s), Lift Acc t, Arrays (Plain t)) => C (r, s, t) 

with :: C f => ((Acc (Arguments () f) -> Acc (Result f)) -> Arguments () f -> Result f) -> f -> Plain f Source

class Arrays (Packed a) => Argument a where Source

Associated Types

type Packed a Source

type Unpacked a Source

Methods

tunnel :: (Unpacked a -> Packed a, Acc (Packed a) -> a) Source

Instances

Argument Z 
Arrays a => Argument (Acc a) 
Elt a => Argument (Exp a) 
(Argument a, Argument b) => Argument (a, b) 
(Unlift Exp a, Lift Exp a, Slice (Plain a), (~) * b (Exp Int)) => Argument ((:.) a b) 
(Argument a, Argument b, Argument c) => Argument (a, b, c)