#include "fusion-phases.h"
module Data.Array.Parallel.Unlifted.Distributed.Data.USegd.Base
( mkDUSegdD
, lengthD
, takeLengthsD
, takeIndicesD
, takeElementsD)
where
import Data.Array.Parallel.Unlifted.Distributed.Data.USegd.DT
import Data.Array.Parallel.Unlifted.Distributed.Primitive
import Data.Array.Parallel.Unlifted.Sequential.USegd (USegd)
import Data.Array.Parallel.Unlifted.Sequential.Vector (Vector)
import qualified Data.Array.Parallel.Unlifted.Distributed.Data.Vector as DV
mkDUSegdD
:: Dist (Vector Int)
-> Dist (Vector Int)
-> Dist Int
-> Dist USegd
mkDUSegdD = DUSegd
lengthD :: Dist USegd -> Dist Int
lengthD (DUSegd lens _ _)
= DV.lengthD lens
takeLengthsD :: Dist USegd -> Dist (Vector Int)
takeLengthsD (DUSegd lens _ _ )
= lens
takeIndicesD :: Dist USegd -> Dist (Vector Int)
takeIndicesD (DUSegd _ idxs _)
= idxs
takeElementsD :: Dist USegd -> Dist Int
takeElementsD (DUSegd _ _ dns)
= dns