[Haskell-cafe] parMap doesn't work fine
brandon_m_moore at yahoo.com
Thu May 12 16:36:55 CEST 2011
> I've just started using parallel computations in Haskell. parMap works fine,
>it is so easy to use. However, parMap fails with functions returning lazy
>structures, e.g. tuples.
> This code works as expected:
> (parMap rpar) bm tvalues
Using rpar is redundant. That strategy schedules a value to maybe be computed
later in parallel, but parMap already distributed work between
cores, so you might as well use rseq or something.
> bm :: Double -> Double is some heavy function. But if I want to return list of
>pairs (t, bm t) it doesn't use cpu cores fine (only one is in use):
> (parMap rpar) (\t -> (t, bm t)) tvalues
That's only evaluating the pair in parallel. bm t will only be computed when you
open up the pairs afterwards.
Try rdeepseq instead.
More information about the Haskell-Cafe