On Fri, Dec 19, 2008 at 9:27 AM, Paul Keir <span dir="ltr">&lt;<a href="mailto:pkeir@dcs.gla.ac.uk">pkeir@dcs.gla.ac.uk</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi all,<br>
<br>
I&#39;m seeing no performance increase with a simple coarse-grained<br>
2-thread code using Control.Concurrent. I compile with:<br>
<br>
&gt; &nbsp;hc conc.hs -o conc --make -threaded<br>
<br>
and I run with<br>
<br>
&gt; &nbsp;time ./conc +RTS -N2<br>
<br>
But using either &quot;-N1&quot; or &quot;-N2&quot;, the program runs in about 1.8secs.<br>
(I&#39;d prefer a longer running thread task, but my fib function<br>
currently runs out of memory).<br>
<br>
Anyway, my program is below, and I&#39;m using GHC version 6.8.2 on<br>
a 2-core Pentium D. Can anyone help?<br>
<br>
module Main where<br>
<br>
import Control.Concurrent<br>
<br>
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)</blockquote><div><br>This is a serial algorithm.&nbsp; No matter what the rest of your program is doing, this calculation is sequential, so you will not see a speedup.<br><br>Parallelizing computation of the fibonacci numbers is reasonably tricky.&nbsp; I think you might be able to do it using the fib(2n) identity.&nbsp; But not this simple algorithm: throwing processors at a problem does not automatically make it parallel.&nbsp; :-)<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
heavytask m = putMVar m (fibs !! 100000)<br>
<br>
main = do ms &lt;- sequence $ replicate 2 newEmptyMVar<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapM_ (forkIO . heavytask) $ tail ms<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;heavytask $ head ms<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ms&#39; &lt;- mapM takeMVar ms<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapM_ print ms&#39;<br>
<br>
Regards,<br>
Paul<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br>