Copyright | (c) Alexey Kuleshevich 2018 |
---|---|
License | BSD3 |
Maintainer | Alexey Kuleshevich <lehins@yandex.ru> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- data D = D
- delay :: Source r ix e => Array r ix e -> Array D ix e
- data DI = DI
- toInterleaved :: Source r ix e => Array r ix e -> Array DI ix e
- data DW = DW
- makeWindowedArray :: Source r ix e => Array r ix e -> ix -> ix -> (ix -> e) -> Array DW ix e
- unsafeBackpermuteDW :: Index ix => (ix -> ix) -> (ix -> ix) -> ix -> Array DW ix a -> Array DW ix a
Documentation
Delayed representation.
Instances
Show D Source # | |
(Index ix, Index (Lower ix), Elt D ix e ~ Array D (Lower ix) e) => Slice D ix e Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
(Elt D ix e ~ Array D (Lower ix) e, Index ix) => InnerSlice D ix e Source # | |
(Elt D ix e ~ Array D (Lower ix) e, Index ix) => OuterSlice D ix e Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
Index ix => Load D ix e Source # | |
Index ix => Source D ix e Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
Index ix => Size D ix e Source # | |
Index ix => Construct D ix e Source # | |
Functor (Array D ix) Source # | |
Index ix => Applicative (Array D ix) Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
Index ix => Foldable (Array D ix) Source # | Row-major sequential folding over a Delayed array. |
Defined in Data.Massiv.Array.Delayed.Internal fold :: Monoid m => Array D ix m -> m # foldMap :: Monoid m => (a -> m) -> Array D ix a -> m # foldr :: (a -> b -> b) -> b -> Array D ix a -> b # foldr' :: (a -> b -> b) -> b -> Array D ix a -> b # foldl :: (b -> a -> b) -> b -> Array D ix a -> b # foldl' :: (b -> a -> b) -> b -> Array D ix a -> b # foldr1 :: (a -> a -> a) -> Array D ix a -> a # foldl1 :: (a -> a -> a) -> Array D ix a -> a # toList :: Array D ix a -> [a] # null :: Array D ix a -> Bool # length :: Array D ix a -> Int # elem :: Eq a => a -> Array D ix a -> Bool # maximum :: Ord a => Array D ix a -> a # minimum :: Ord a => Array D ix a -> a # | |
(Eq e, Index ix) => Eq (Array D ix e) Source # | |
(Index ix, Floating e) => Floating (Array D ix e) Source # | |
Defined in Data.Massiv.Array.Delayed.Internal exp :: Array D ix e -> Array D ix e # log :: Array D ix e -> Array D ix e # sqrt :: Array D ix e -> Array D ix e # (**) :: Array D ix e -> Array D ix e -> Array D ix e # logBase :: Array D ix e -> Array D ix e -> Array D ix e # sin :: Array D ix e -> Array D ix e # cos :: Array D ix e -> Array D ix e # tan :: Array D ix e -> Array D ix e # asin :: Array D ix e -> Array D ix e # acos :: Array D ix e -> Array D ix e # atan :: Array D ix e -> Array D ix e # sinh :: Array D ix e -> Array D ix e # cosh :: Array D ix e -> Array D ix e # tanh :: Array D ix e -> Array D ix e # asinh :: Array D ix e -> Array D ix e # acosh :: Array D ix e -> Array D ix e # atanh :: Array D ix e -> Array D ix e # log1p :: Array D ix e -> Array D ix e # expm1 :: Array D ix e -> Array D ix e # | |
(Index ix, Fractional e) => Fractional (Array D ix e) Source # | |
(Index ix, Num e) => Num (Array D ix e) Source # | |
Defined in Data.Massiv.Array.Delayed.Internal (+) :: Array D ix e -> Array D ix e -> Array D ix e # (-) :: Array D ix e -> Array D ix e -> Array D ix e # (*) :: Array D ix e -> Array D ix e -> Array D ix e # negate :: Array D ix e -> Array D ix e # abs :: Array D ix e -> Array D ix e # signum :: Array D ix e -> Array D ix e # fromInteger :: Integer -> Array D ix e # | |
(Ord e, Index ix) => Ord (Array D ix e) Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
data Array D ix e Source # | |
Defined in Data.Massiv.Array.Delayed.Internal | |
type EltRepr D ix Source # | |
Defined in Data.Massiv.Array.Delayed.Internal |
delay :: Source r ix e => Array r ix e -> Array D ix e Source #
O(1) Conversion from a source array to D
representation.
Delayed array that will be loaded in an interleaved fasion during parallel computation.
toInterleaved :: Source r ix e => Array r ix e -> Array DI ix e Source #
Convert a source array into an array that, when computed, will have its elemets evaluated out of order (interleaved amoungs cores), hence making unbalanced computation better parallelizable.
Delayed Windowed Array representation.
Instances
(Index ix, Load DW (Lower ix) e) => Load DW ix e Source # | |
Load DW Ix2T e Source # | |
Load DW Ix2 e Source # | |
Load DW Ix1 e Source # | |
Index ix => Size DW ix e Source # | Any resize or extract on Windowed Array will hurt the performance. |
Index ix => Construct DW ix e Source # | |
Functor (Array DW ix) Source # | |
(Show e, Ragged L ix e, Load DW ix e) => Show (Array DW ix e) Source # | |
data Array DW ix e Source # | |
Defined in Data.Massiv.Array.Delayed.Windowed data Array DW ix e = DWArray {
| |
type EltRepr DW ix Source # | |
Defined in Data.Massiv.Array.Delayed.Windowed |
:: Source r ix e | |
=> Array r ix e | Source array that will have a window inserted into it |
-> ix | Start index for the window |
-> ix | Size of the window |
-> (ix -> e) | Inside window indexing function |
-> Array DW ix e |
Supply a separate generating function for interior of an array. This is very usful for stencil mapping, where interior function does not perform boundary checks, thus significantly speeding up computation process.
Since: massiv-0.1.3
:: Index ix | |
=> (ix -> ix) | map from old to new index |
-> (ix -> ix) | map from new to old index |
-> ix | Size of resulting array |
-> Array DW ix a | |
-> Array DW ix a |
Backpermute a windowed array. If index mappings aren't correct reading memory out of bounds is very likely.
Note: windowStartIndex is mapped to the new windowStartIndex using the "old to new index" map. This means that the order of the elements should be preserved, or performance will take a major hit.
Important: This function is still experimental and can be removed in any future minor release.
Since: massiv-0.2.0