Repository : ssh://darcs.haskell.org//srv/darcs/packages/dph

On branch  : 

http://hackage.haskell.org/trac/ghc/changeset/a06add5a1b89188a9a4547051eafc44c074cb482

>---------------------------------------------------------------

commit a06add5a1b89188a9a4547051eafc44c074cb482
Author: George Roldugin <[email protected]>
Date:   Tue May 17 10:04:58 2011 +1000

    Fix foldl1UP. Fold1 is now parallel.

>---------------------------------------------------------------

 dph-prim-par/Data/Array/Parallel/Unlifted.hs       |    2 +-
 .../Data/Array/Parallel/Unlifted/Parallel.hs       |    2 +-
 .../Parallel/Unlifted/Parallel/Combinators.hs      |    7 ++-----
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/dph-prim-par/Data/Array/Parallel/Unlifted.hs 
b/dph-prim-par/Data/Array/Parallel/Unlifted.hs
index 6955d28..5f0416a 100644
--- a/dph-prim-par/Data/Array/Parallel/Unlifted.hs
+++ b/dph-prim-par/Data/Array/Parallel/Unlifted.hs
@@ -157,7 +157,7 @@ fold f x arr
         
 fold1 f arr
         =  tracePrim (TraceFold1 (Seq.length arr))
-        $! Seq.fold1 f arr
+        $! fold1UP f arr
 
 
 and arr =  tracePrim (TraceAnd (Seq.length arr))
diff --git a/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel.hs 
b/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel.hs
index 31a9adb..9dc717d 100644
--- a/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel.hs
+++ b/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel.hs
@@ -21,7 +21,7 @@ module Data.Array.Parallel.Unlifted.Parallel (
   enumFromToUP, enumFromThenToUP, enumFromStepLenUP, enumFromStepLenEachUP,
 
   mapUP, filterUP, packUP, combineUP, combine2UP,
-  zipWithUP, foldUP, scanUP,
+  zipWithUP, foldUP, fold1UP, scanUP,
 
   andUP, sumUP,
 
diff --git a/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel/Combinators.hs 
b/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel/Combinators.hs
index 3f22a50..e14d14e 100644
--- a/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel/Combinators.hs
+++ b/dph-prim-par/Data/Array/Parallel/Unlifted/Parallel/Combinators.hs
@@ -24,6 +24,7 @@ import Data.Array.Parallel.Unlifted.Sequential.Vector as Seq
 import Data.Array.Parallel.Unlifted.Distributed
 import Data.Array.Parallel.Unlifted.Parallel.UPSel
 
+import Data.Maybe (fromJust)
 import Debug.Trace (trace)
 
 -- | Apply a worker to all elements of a vector.
@@ -110,9 +111,6 @@ foldlUP f z arr
 
 
 -- | Reduction of a non-empty array which requires an associative combination 
function.

>---------------------------------------------------------------

---   TODO: What is the difference between this and foldUP above?
---         The two type class constraints are in a different order. Does that 
matter?
 fold1UP :: (DT a, Unbox a) => (a -> a -> a) -> Vector a -> a
 {-# INLINE fold1UP #-}
 fold1UP = foldl1UP
@@ -122,12 +120,11 @@ fold1UP = foldl1UP
 foldl1UP :: (DT a, Unbox a) => (a -> a -> a) -> Vector a -> a
 {-# INLINE_U foldl1UP #-}
 foldl1UP f arr
-        = (maybe z (f z)
+        = (fromJust
         . foldD  theGang combine
         . mapD   theGang (Seq.foldl1Maybe f)
         . splitD theGang unbalanced) arr
         where
-                z = arr ! 0
                 combine (Just x) (Just y) = Just (f x y)
                 combine (Just x) Nothing  = Just x
                 combine Nothing  (Just y) = Just y



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to