repa-3.4.1.2: High performance, regular, shape polymorphic parallel arrays.

Safe Haskell | None
Language | Haskell98

Data.Array.Repa.Repr.Partitioned

Synopsis

- data P r1 r2
- data Range sh = Range !sh !sh (sh -> Bool)
- inRange :: Range sh -> sh -> Bool

# Documentation

data P r1 r2 Source #

Partitioned arrays. The last partition takes priority

These are produced by Repa's support functions and allow arrays to be defined using a different element function for each partition.

The basic idea is described in ``Efficient Parallel Stencil Convolution'', Ben Lippmeier and Gabriele Keller, Haskell 2011 -- though the underlying array representation has changed since this paper was published.

Instances

(Source r1 e, Source r2 e) => Source (P r1 r2) e Source # | Read elements from a partitioned array.

Associated Types

data Array (P r1 r2) sh e :: * Source #

Methods

extent :: Shape sh => Array (P r1 r2) sh e -> sh Source #

index :: Shape sh => Array (P r1 r2) sh e -> sh -> e Source #

unsafeIndex :: Shape sh => Array (P r1 r2) sh e -> sh -> e Source #

linearIndex :: Shape sh => Array (P r1 r2) sh e -> Int -> e Source #

unsafeLinearIndex :: Shape sh => Array (P r1 r2) sh e -> Int -> e Source #

deepSeqArray :: Shape sh => Array (P r1 r2) sh e -> b -> b Source #

(LoadRange r1 sh e, Load r2 sh e) => Load (P r1 r2) sh e Source # |
Methods loadS :: Target r2 e => Array (P r1 r2) sh e -> MVec r2 e -> IO () Source # loadP :: Target r2 e => Array (P r1 r2) sh e -> MVec r2 e -> IO () Source #
(Structured r1 a b, Structured r2 a b) => Structured (P r1 r2) a b Source # |
Associated Types type TR (P r1 r2) :: * Source # Methods smap :: Shape sh => (a -> b) -> Array (P r1 r2) sh a -> Array (TR (P r1 r2)) sh b Source # szipWith :: (Shape sh, Source r c) => (c -> a -> b) -> Array r sh c -> Array (P r1 r2) sh a -> Array (TR (P r1 r2)) sh b Source #
data Array (P r1 r2) Source # |
data Array (P r1 r2) = APart !sh !(Range sh) !(Array r1 sh e) !(Array r2 sh e)
type TR (P r1 r2) Source # |
type TR (P r1 r2) = P (TR r1) (TR r2)

data Range sh Source #

Constructors

Range !sh !sh (sh -> Bool) |

inRange :: Range sh -> sh -> Bool Source #

Check whether an index is within the given range.