[Haskell-cafe] GHC threaded runtimes and pure functions
gregorypropf at yahoo.com
Wed Sep 16 10:34:49 EDT 2009
That makes sense. So maybe I should split my mapping into two parallel ones or however many CPUs there are using par.
--- On Wed, 9/16/09, Bulat Ziganshin <bulat.ziganshin at gmail.com> wrote:
From: Bulat Ziganshin <bulat.ziganshin at gmail.com>
Subject: Re: [Haskell-cafe] GHC threaded runtimes and pure functions
To: "Gregory Propf" <gregorypropf at yahoo.com>
Cc: "Haskell-Cafe" <haskell-cafe at haskell.org>
Date: Wednesday, September 16, 2009, 6:29 AM
Wednesday, September 16, 2009, 5:17:01 PM, you wrote:
no. additional threads are launched for i/o system and, as you
requested by -N2 for haskell workload. but ghc don't auto-parallelize
your code. it's a bit too hard, since making too much threads (e.g.
one for every addition) will make bookkeeping too heavy and it's
impossible to automatically deduce how much operations each
computation will require. instead, you are provided with 'par'
primitive to show compiler explicitly what parts to run in parallel
> One of the things I liked about Haskell was the notion of pure
> functions and the fact that they can be, in theory, automatically
> parallelized on multicore hardware. I think this will become a huge
> deal in a few years as cores multiply. My question is simply this:
> under GHC is this what really happens with, say a mapping over a
> pure function. Yes, I compiled with --threaded and am using the
> +RTS -N2 options on my dual core machine. Here's the code I wrote
> as a speed test. It just doesn't seem any faster with -N2. Using
> the ps command I found that multiple threads are indeed launched
> (this is Linux) but all but one show as being in a state of waiting
> for some event to finish (the ps output flags them all 'Sl'.
> main = do rg <- getStdGen
> let rs = take 10000000 $ randomRs (1::Int,100000::Int) rg
> rs'= map (\n -> n*n) rs
> print rs'
Bulat mailto:Bulat.Ziganshin at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe