Fix and use enumFromToEachUP
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 20 May 2010 03:08:05 +0000 (03:08 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 20 May 2010 03:08:05 +0000 (03:08 +0000)
dph-prim-par/Data/Array/Parallel/Unlifted.hs
dph-prim-par/Data/Array/Parallel/Unlifted/Parallel.hs
dph-prim-par/Data/Array/Parallel/Unlifted/Parallel/Enum.hs

index f0a66c6..67f7af6 100644 (file)
@@ -50,7 +50,7 @@ indexed = indexedUP
 enumFromTo = enumFromToUP
 enumFromThenTo = enumFromThenToUP
 enumFromStepLen = enumFromStepLenUP
-enumFromToEach = enumFromToEachU
+enumFromToEach = enumFromToEachUP
 enumFromStepLenEach =enumFromStepLenEachUP
 
 replicate_s = replicateSUP
index 5632e01..e694a54 100644 (file)
@@ -16,7 +16,7 @@
 module Data.Array.Parallel.Unlifted.Parallel (
   bpermuteUP, updateUP,
 
-  enumFromToUP, enumFromThenToUP, enumFromStepLenUP, enumFromStepLenEachUP,
+  enumFromToUP, enumFromThenToUP, enumFromStepLenUP, enumFromStepLenEachUP, enumFromToEachUP,
 
   mapUP, filterUP, packUP, combineUP, combine2ByTagUP,
   zipWithUP, foldUP, scanUP,
index e3a32bc..8fe5fc4 100644 (file)
@@ -60,9 +60,10 @@ enumFromStepLenUP start delta len =
 
 enumFromToEachUP :: Int -> UArr (Int :*: Int) -> UArr Int
 {-# INLINE enumFromToEachUP #-}
-enumFromToEachUP n inds =  
-  joinD theGang unbalanced $ mapD theGang (uncurryS enumFromToEachU) $ 
-    zipD  (splitLenD theGang n) (splitD theGang balanced inds)
+enumFromToEachUP n inds = enumFromStepLenEachUP n
+                        $ mapUP mk inds
+  where
+    mk (x :*: y) = x :*: 1 :*: (y-x+1)
 
 enumFromStepLenEachUP :: Int -> UArr (Int :*: Int :*: Int) -> UArr Int
 {-# INLINE enumFromStepLenEachUP #-}