dph-lifted-vseg: turn on new stream function for indexs
authorBen Lippmeier <benl@ouroborus.net>
Tue, 13 Dec 2011 09:01:26 +0000 (20:01 +1100)
committerBen Lippmeier <benl@ouroborus.net>
Tue, 13 Dec 2011 09:01:26 +0000 (20:01 +1100)
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Base.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Double.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Int.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Nested.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Word8.hs

index adf7d53..b77564c 100644 (file)
@@ -185,23 +185,6 @@ class PR a where
 
   -- | O(1). Shared indexing
   indexvsPR     :: PDatas a -> U.VSegd -> U.Array (Int, Int) -> PData a
-  indexvsPR pdatas vsegd srcixs
-   = let
-         !vsegids         = U.takeVSegidsRedundantOfVSegd vsegd
-         !ssegd           = U.takeSSegdRedundantOfVSegd   vsegd
-         !sources         = U.sourcesOfSSegd   ssegd
-         !starts          = U.startsOfSSegd    ssegd
-
-         !srcixs' 
-          = U.map (\(ix1, ix2)
-                   -> let !psegid = U.index "indexvsPR/vsegids" vsegids ix1
-                          !source = U.index "indexvsPR/sources" sources psegid
-                          !start  = U.index "indexvsPR/starts"  starts  psegid
-                      in  (source, start + ix2))
-                   srcixs
-
-     in  indexsPR pdatas srcixs'
-  {-# INLINE_PDATA indexvsPR #-}
 
   -- | O(slice len). Extract a slice of elements from an array,
   --  given the starting index and length of the slice.
index b141a9a..821a683 100644 (file)
@@ -85,9 +85,9 @@ instance PR Double where
   indexsPR (PDoubles pvecs) srcixs
         = PDouble $ U.map (\(src, ix) -> U.unsafeIndex2s pvecs src ix) srcixs
 
-  -- {-# INLINE_PDATA indexvsPR #-}
-  -- indexvsPR (PDoubles arrs) vsegd srcixs 
-  --       = PDouble $ U.unsafeIndexs_avs arrs vsegd srcixs
+  {-# INLINE_PDATA indexvsPR #-}
+  indexvsPR (PDoubles arrs) vsegd srcixs 
+        = PDouble $ U.indexs_avs arrs vsegd srcixs
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PDouble arr) start len 
index 1be96ab..ab5332a 100644 (file)
@@ -75,8 +75,8 @@ instance PR Int where
         = PInt $ U.map (\(src, ix) -> U.unsafeIndex2s pvecs src ix) srcixs
 
   -- {-# INLINE_PDATA indexvsPR #-}
-  -- indexvsPR (PInts arrs) vsegd srcixs 
-  --       = PInt $ U.unsafeIndexs_avs arrs vsegd srcixs
+  indexvsPR (PInts arrs) vsegd srcixs 
+        = PInt $ U.indexs_avs arrs vsegd srcixs
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PInt arr) start len 
index 0813c42..7d284e7 100644 (file)
@@ -348,6 +348,24 @@ instance PR a => PR (PArray a) where
      in  PNested vsegd' pdatas' segd' flat'
 
 
+  {-# INLINE_PDATA indexvsPR #-}
+  indexvsPR pdatas vsegd srcixs
+   = let !vsegids         = U.takeVSegidsRedundantOfVSegd vsegd
+         !ssegd           = U.takeSSegdRedundantOfVSegd   vsegd
+         !sources         = U.sourcesOfSSegd   ssegd
+         !starts          = U.startsOfSSegd    ssegd
+
+         !srcixs' 
+          = U.map (\(ix1, ix2)
+                   -> let !psegid = U.index "indexvsPR/vsegids" vsegids ix1
+                          !source = U.index "indexvsPR/sources" sources psegid
+                          !start  = U.index "indexvsPR/starts"  starts  psegid
+                      in  (source, start + ix2))
+                   srcixs
+
+     in  indexsPR pdatas srcixs'
+
+
   -- To extract a range of elements from a nested array, perform the extract
   -- on the vsegids field. The `updateVSegsOfUVSegd` function will then filter
   -- out all of the psegs that are no longer reachable from the new vsegids.
index db3b20a..a67f393 100644 (file)
@@ -80,11 +80,11 @@ instance PR Word8 where
 
   {-# INLINE_PDATA indexsPR #-}
   indexsPR (PWord8s pvecs) srcixs
-   = PWord8 $ U.map (\(src, ix) -> U.unsafeIndex2s pvecs src ix) srcixs
+        = PWord8 $ U.map (\(src, ix) -> U.unsafeIndex2s pvecs src ix) srcixs
 
-  -- {-# INLINE_PDATA indexvsPR #-}
-  -- indexvsPR (PWord8s arrs) vsegd srcixs 
-  --  = PWord8 $ U.unsafeIndexs_avs arrs vsegd srcixs
+  {-# INLINE_PDATA indexvsPR #-}
+  indexvsPR (PWord8s arrs) vsegd srcixs 
+        = PWord8 $ U.indexs_avs arrs vsegd srcixs
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PWord8 arr) start len