#include "fusion-phases.h"
module Data.Array.Parallel.Unlifted.Sequential.Extracts
(
indexsFromVector
, indexsFromVectorsUVSegd
, extractsFromNestedUSSegd
, extractsFromVectorsUSSegd
, extractsFromVectorsUVSegd)
where
import Data.Array.Parallel.Unlifted.Stream as US
import Data.Array.Parallel.Unlifted.Vectors as US
import Data.Array.Parallel.Unlifted.Sequential.Vector as U
import Data.Array.Parallel.Unlifted.Sequential.USSegd (USSegd)
import Data.Array.Parallel.Unlifted.Sequential.UVSegd (UVSegd)
import qualified Data.Vector as V
indexsFromVector
:: Unbox a
=> Vector a -> Vector Int -> Vector a
indexsFromVector vector ixs
= U.unstream
$ streamElemsFromVector vector
$ U.stream ixs
indexsFromVectorsUVSegd
:: (Unbox a, US.Unboxes a)
=> Vectors a -> UVSegd -> Vector (Int, Int) -> Vector a
indexsFromVectorsUVSegd vectors uvsegd vsrcixs
= U.unstream
$ streamElemsFromVectorsVSegd vectors uvsegd
$ U.stream vsrcixs
extractsFromNestedUSSegd
:: (U.Unbox a)
=> USSegd -> V.Vector (Vector a) -> U.Vector a
extractsFromNestedUSSegd ussegd vectors
= U.unstream $ streamSegsFromNestedUSSegd vectors ussegd
extractsFromVectorsUSSegd
:: (Unboxes a, U.Unbox a)
=> USSegd -> Vectors a -> U.Vector a
extractsFromVectorsUSSegd ussegd vectors
= U.unstream $ streamSegsFromVectorsUSSegd vectors ussegd
extractsFromVectorsUVSegd
:: (Unbox a, US.Unboxes a)
=> UVSegd
-> Vectors a
-> Vector a
extractsFromVectorsUVSegd uvsegd vectors
= U.unstream $ US.streamSegsFromVectorsUVSegd vectors uvsegd