[Haskell-beginners] Re: parallel program in haskell in 5 steps

Ertugrul Soeylemez es at ertes.de
Tue May 5 16:59:23 EDT 2009


Hello Jack,

according to the source code your program should not run for a long
time.  If you're using GHC, use the '-threaded' flag when compiling and
also pass the parameters '+RTS -N2' to your program to let it run with
two parallel threads.

However, my experience is that the pure parallel constructs are
currently not really suitable for real world programs.  With my dual
core processor I get the expected ~190% CPU time using explicit
parallelism using concurrency (i.e. forkIO and MVars), whereas with pure
constructs like the ones from Control.Parallel and
Control.Parallel.Strategies I get only about 140%.


Greets,
Ertugrul.


Jack Kennedy <jack at realmode.com> wrote:

> In step 4 of Haskell in 5 Steps [
> http://haskell.org/haskellwiki/Haskell_in_5_steps],
> a parallel program is given. I changed it very slightly so it would run a
> long time (see below).
> 
> It compiles and runs but my CPU meter is barely above 50%.  I have a dual
> core processor.
> What in the world would keep this program from completely saturating the
> CPU?
> 
> import Control.Parallel
> 
> main = a `par` b `pseq` print (a + b)
>     where
>         a = ack 4 10
>         b = ack 4 10
> 
> fac 0 = 1
> fac n = n * fac (n-1)
> 
> ack 0 n = n+1
> ack m 0 = ack (m-1) 1
> ack m n = ack (m-1) (ack m (n-1))
> 
> fib 0 = 0
> fib 1 = 1
> fib n = fib (n-1) + fib (n-2)
> 


-- 
nightmare = unsafePerformIO (getWrongWife >>= sex)
http://blog.ertes.de/




More information about the Beginners mailing list