module Data.Array.Repa.Eval.Load ( Load (..) , LoadRange (..)) where import Data.Array.Repa.Eval.Target import Data.Array.Repa.Shape import Data.Array.Repa.Base -- Load ----------------------------------------------------------------------- -- | Compute all elements defined by an array and write them to a manifest -- target representation. -- -- Note that instances require that the source array to have a delayed -- representation such as `D` or `C`. If you want to use a pre-existing -- manifest array as the source then `delay` it first. class (Source r1 e, Shape sh) => Load r1 sh e where -- | Fill an entire array sequentially. loadS :: Target r2 e => Array r1 sh e -> MVec r2 e -> IO () -- | Fill an entire array in parallel. loadP :: Target r2 e => Array r1 sh e -> MVec r2 e -> IO () -- FillRange ------------------------------------------------------------------ -- | Compute a range of elements defined by an array and write them to a fillable -- representation. class (Source r1 e, Shape sh) => LoadRange r1 sh e where -- | Fill a range of an array sequentially. loadRangeS :: Target r2 e => Array r1 sh e -> MVec r2 e -> sh -> sh -> IO () -- | Fill a range of an array in parallel. loadRangeP :: Target r2 e => Array r1 sh e -> MVec r2 e -> sh -> sh -> IO ()