-- |An embedded language of accelerated array computations -- -- Copyright (c) [2008..2009] Manuel M T Chakravarty, Gabriele Keller, Sean Lee -- -- License: BSD3 -- --- Description --------------------------------------------------------------- -- -- Abstract interface -- ~~~~~~~~~~~~~~~~~~ -- The types representing array computations are only exported abstractly. -- This gives us more flexibility for later changes. -- -- Code execution -- ~~~~~~~~~~~~~~ -- Access to the various backends is via the 'run' function in -- backend-specific toplevel modules. Currently, we have the following: -- -- * 'Data.Array.Accelerate.Interpreter': simple interpreter in Haskell as a -- reference implementation defining the semantics of the array language module Data.Array.Accelerate ( -- * Scalar element types Int, Int8, Int16, Int32, Int64, Word, Word8, Word16, Word32, Word64, CShort, CUShort, CInt, CUInt, CLong, CULong, CLLong, CULLong, Float, Double, CFloat, CDouble, Bool, Char, CChar, CSChar, CUChar, -- * Array data types Array, Scalar, Vector, -- * Array element types Elem, -- * Array shapes & indices Ix(dim, size), All(..), SliceIx(..), DIM0, DIM1, DIM2, DIM3, DIM4, DIM5, -- * Array operations arrayShape, indexArray, fromIArray, toIArray, fromList, toList, Arrays, -- * Surface language module Data.Array.Accelerate.Language, ) where -- friends import Data.Array.Accelerate.Type import Data.Array.Accelerate.Array.Sugar hiding ((!), shape) import qualified Data.Array.Accelerate.Array.Sugar as Sugar import Data.Array.Accelerate.Language -- rename as '(!)' is already used by the EDSL for indexing indexArray :: Array dim e -> dim -> e indexArray = (Sugar.!) -- rename as 'shape' is already used by the EDSL to query an array's shape arrayShape :: Ix dim => Array dim e -> dim arrayShape = Sugar.shape