gregorypropf: > 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'
GHC doesn't auto-parallelize. You would have to use one of the several fine parallelism constructrs to achieve a speedup. Here's a recent tutorial, http://donsbot.wordpress.com/2009/09/05/defun-2009-multicore-programming-in-haskell-now/ and some background reading, http://donsbot.wordpress.com/2009/09/03/parallel-programming-in-haskell-a-reading-list/ -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe