Portability | non-portable (GHC extensions) |
---|---|
Stability | experimental |
Maintainer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> |
Safe Haskell | None |
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
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.
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