| Copyright | (c) Alexey Kuleshevich 2018 |
|---|---|
| License | BSD3 |
| Maintainer | Alexey Kuleshevich <lehins@yandex.ru> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Massiv.Array.Delayed
Description
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.
Constructors
| D |
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 Methods 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 Methods 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 Methods (+) :: 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.
Constructors
| DI |
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.
Constructors
| DW |
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 | |
Arguments
| :: 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
Arguments
| :: 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