<div dir="ltr"><div>> ... still seems to kick 16 CPUs well into the 90%+ utilization range .... This code has no parallelism primitives in it whatsoever.<br><br></div>You're probably seeing the parallel garbage collector. This is known to catch the unwary by surprise (see Bryan's comment):<br><br><a href="http://www.reddit.com/r/haskell/comments/2m0pv6/force_criterion_to_benchmark_sequentially_for/" target="_blank">http://www.reddit.com/r/haskell/comments/2m0pv6/force_criterion_to_benchmark_sequentially_for/</a><br><br><div><div><div><div>As an aside: It really would be nice to have some criterion-like ability from ghci. In fact that would be super cool because none of the other languages have that.<br><br></div><div>This is well within the purview of a GSoC and whoever pulls it off bags bragging rights easily convertible into job offers.<br></div></div></div></div><div class="gmail_extra"><br clear="all"><div><div>-- Kim-Ee</div></div>
<br><div class="gmail_quote">On Fri, Mar 6, 2015 at 5:23 AM, David Rush <span dir="ltr"><<a href="mailto:kumoyuki@gmail.com" target="_blank">kumoyuki@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all -<br>
<br>
Is it my imagination, or are the statistics printed by GHCi when :set +s<br>
has been enabled entirely spurious when SMP parallelism is turned on? I'm<br>
trying to determine if I am actually getting any improvement, and - both<br>
by the wall clock and by the reported statistics I don't seem to be;<br>
however, the reported statistics don't seem to line up very well with the<br>
wall clock time.<br>
<br>
An additional oddity that I've noted is that my algorithm's reference<br>
implementation - which simply can't run in parallel due to a foolishly<br>
introduced data dependency - still seems to kick 16 CPUs well into the<br>
90%+ utilization range when I have +RTS -N. This code has no parallelism<br>
primitives in it whatsoever.<br>
<br>
I realize that I'm not being terribly rigorous in my description here, but<br>
that is partly because I am not sure how to report on this yet. I think my<br>
next step is going to be to build a standalone executable to check using<br>
the Unix time command.<br>
<br>
For reference I am running Haskell platform from Debian Jessie on a 16-<br>
core amd64 system with 29GiB or RAM available. This would appear to be GHC<br>
7.6.3 :(<br>
<br>
- d<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div></div>