Thanks Simon. Parallel 2.2.0.1 was straight forward. I just replaced rnf with rdeepseq and my original use of parMap worked like a charm giving twice the performance for my dual-core system as I original expected and now find.
Thanks, - Marcus Marcus D. Gabriel wrote: > Thank you Simon, I will obtain parallel 2.2.0.1 and work with it. > Actually, the reason I asked my question was because I did not > think forceParList should yield better performance than parList > (unless it was becasue of the foldl?). > > I read the release notes for 6.12.1 about the work done on the ghc > parallel framework and did just a little bit more experimenting. > You might find this of interesting. > > ghc 6.10.4 with parallel 1.1.0.1 (as reported before): > Serial algorithm: 1.00 unit of time > Parallel algorithm with parList: 0.81 units of time > Parallel algorithm with forceParList: 0.58 units of time > > ghc 6.12.1 with parallel 1.1.0.1: > Serial algorithm: 1.00 unit of time > Parallel algorithm with parList: 0.58 units of time* > Parallel algorithm with forceParList: 0.58 units of time* > > Interesting. Well, from my perspective, 6.12.1 is certainly an > improvement here. > > Cheers, > - Marcus > > Simon Marlow wrote: > >> On 18/12/2009 18:31, Marcus D. Gabriel wrote: >> >>> Hello, >>> >>> In Control.Parallel.Strategies, parList is defined as >>> >>> parList strat [] = () >>> parList strat (x:xs) = strat x `par` (parList strat xs) >>> >>> with >>> >>> parMap strat f xs = map f xs `using` parList strat. >>> >>> I have recently found that if I define >>> >>> forceParMap strat f xs = map f xs `using` forceParList strat >>> >>> where >>> >>> forceParList strat = foldl (\done -> (done>||) . strat) () >>> >>> then to date, forceParList via forceParMap gives faster results >>> than parList via parMap. For example, in one experiment, parMap >>> with parList run at 0.81 the time of the serial solution whereas >>> forceParMap with forceParList run at 0.58 the time of the serial >>> solution. This is to say, forceParList completed in 0.72 the >>> time of parList. So, >>> >>> 1. Why is forceParList faster than parList? >>> 2. Is this generic to the ghc runtime model or a particularity >>> of the ghc implementation? >>> >> I'm not sure. Your forceParList looks equivalent to parList, unless >> I'm misreading it. >> >> I recommend trying out the new parallel package, here: >> >> http://hackage.haskell.org/package/parallel >> >> which has a new implementation of Strategies. The version of parList >> you quoted above has a space leak problem which may be affecting your >> results. >> >> Cheers, >> Simon >> _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users