| Portability | non-portable (GHC extensions) | 
|---|---|
| Stability | experimental | 
| Maintainer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 
| Safe Haskell | None | 
Data.Array.Accelerate.Array.Data
Description
This module fixes the concrete representation of Accelerate arrays. We allocate all arrays using pinned memory to enable safe direct-access by non-Haskell code in multi-threaded code. In particular, we can safely pass pointers to an array's payload to foreign code.
- class  ArrayElt e  where
- type ArrayPtrs e
 - indexArrayData :: ArrayData e -> Int -> e
 - ptrsOfArrayData :: ArrayData e -> ArrayPtrs e
 - newArrayData :: Int -> ST s (MutableArrayData s e)
 - readArrayData :: MutableArrayData s e -> Int -> ST s e
 - writeArrayData :: MutableArrayData s e -> Int -> e -> ST s ()
 - unsafeFreezeArrayData :: MutableArrayData s e -> ST s (ArrayData e)
 - ptrsOfMutableArrayData :: MutableArrayData s e -> ST s (ArrayPtrs e)
 - arrayElt :: ArrayEltR e
 
 - type ArrayData e = GArrayData (UArray Int) e
 - type MutableArrayData s e = GArrayData (STUArray s Int) e
 - runArrayData :: ArrayElt e => (forall s. ST s (MutableArrayData s e, e)) -> (ArrayData e, e)
 - data  ArrayEltR a where
- ArrayEltRunit :: ArrayEltR ()
 - ArrayEltRint :: ArrayEltR Int
 - ArrayEltRint8 :: ArrayEltR Int8
 - ArrayEltRint16 :: ArrayEltR Int16
 - ArrayEltRint32 :: ArrayEltR Int32
 - ArrayEltRint64 :: ArrayEltR Int64
 - ArrayEltRword :: ArrayEltR Word
 - ArrayEltRword8 :: ArrayEltR Word8
 - ArrayEltRword16 :: ArrayEltR Word16
 - ArrayEltRword32 :: ArrayEltR Word32
 - ArrayEltRword64 :: ArrayEltR Word64
 - ArrayEltRfloat :: ArrayEltR Float
 - ArrayEltRdouble :: ArrayEltR Double
 - ArrayEltRbool :: ArrayEltR Bool
 - ArrayEltRchar :: ArrayEltR Char
 - ArrayEltRpair :: (ArrayElt a, ArrayElt b) => ArrayEltR a -> ArrayEltR b -> ArrayEltR (a, b)
 
 - data family GArrayData :: (* -> *) -> * -> *
 - fstArrayData :: ArrayData (a, b) -> ArrayData a
 - sndArrayData :: ArrayData (a, b) -> ArrayData b
 - pairArrayData :: ArrayData a -> ArrayData b -> ArrayData (a, b)
 
Array operations and representations
Methods
indexArrayData :: ArrayData e -> Int -> eSource
ptrsOfArrayData :: ArrayData e -> ArrayPtrs eSource
newArrayData :: Int -> ST s (MutableArrayData s e)Source
readArrayData :: MutableArrayData s e -> Int -> ST s eSource
writeArrayData :: MutableArrayData s e -> Int -> e -> ST s ()Source
unsafeFreezeArrayData :: MutableArrayData s e -> ST s (ArrayData e)Source
ptrsOfMutableArrayData :: MutableArrayData s e -> ST s (ArrayPtrs e)Source
type ArrayData e = GArrayData (UArray Int) eSource
Immutable array representation
type MutableArrayData s e = GArrayData (STUArray s Int) eSource
Mutable array representation
runArrayData :: ArrayElt e => (forall s. ST s (MutableArrayData s e, e)) -> (ArrayData e, e)Source
Safe combination of creating and fast freezing of array data.
GADT to reify the ArrayElt class.
Constructors
| ArrayEltRunit :: ArrayEltR () | |
| ArrayEltRint :: ArrayEltR Int | |
| ArrayEltRint8 :: ArrayEltR Int8 | |
| ArrayEltRint16 :: ArrayEltR Int16 | |
| ArrayEltRint32 :: ArrayEltR Int32 | |
| ArrayEltRint64 :: ArrayEltR Int64 | |
| ArrayEltRword :: ArrayEltR Word | |
| ArrayEltRword8 :: ArrayEltR Word8 | |
| ArrayEltRword16 :: ArrayEltR Word16 | |
| ArrayEltRword32 :: ArrayEltR Word32 | |
| ArrayEltRword64 :: ArrayEltR Word64 | |
| ArrayEltRfloat :: ArrayEltR Float | |
| ArrayEltRdouble :: ArrayEltR Double | |
| ArrayEltRbool :: ArrayEltR Bool | |
| ArrayEltRchar :: ArrayEltR Char | |
| ArrayEltRpair :: (ArrayElt a, ArrayElt b) => ArrayEltR a -> ArrayEltR b -> ArrayEltR (a, b) | 
data family GArrayData :: (* -> *) -> * -> *Source
Array tuple operations
fstArrayData :: ArrayData (a, b) -> ArrayData aSource
sndArrayData :: ArrayData (a, b) -> ArrayData bSource
pairArrayData :: ArrayData a -> ArrayData b -> ArrayData (a, b)Source