
Hi all, I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release: -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- anna -0.8% +1.5% 0.08 0.08 +0.0% ansi -0.5% +0.5% 0.00 0.00 +0.0% atom -0.9% -0.0% -3.1% -0.8% +0.0% awards -0.9% +0.1% 0.00 0.00 +0.0% banner +0.1% +2.2% 0.00 0.00 +0.0% bernouilli -0.6% +2.7% 0.12 0.13 +0.0% boyer -0.7% +0.0% 0.03 0.04 +0.0% boyer2 -0.1% +0.0% 0.01 0.01 +0.0% bspt -0.6% -0.0% 0.01 0.02 +0.0% cacheprof -0.9% +6.9% +0.8% +4.0% +0.0% calendar -0.9% +0.1% 0.00 0.00 +0.0% cichelli -0.1% -0.0% 0.06 0.06 +9.4% circsim -0.7% +0.1% +1.6% +7.0% +13.6% clausify -0.8% +0.0% 0.03 0.03 +0.0% comp_lab_zift -0.7% +0.0% 0.14 0.14 -12.5% compress -0.1% +0.0% 0.12 0.13 +0.0% compress2 -0.0% +0.0% 0.12 0.14 +2.3% constraints -0.8% +0.0% -3.3% -0.7% +0.0% cryptarithm1 -0.1% +0.0% +2.1% +4.1% +0.0% cryptarithm2 -0.0% -0.8% 0.01 0.01 +0.0% cse -0.0% -0.0% 0.00 0.00 +0.0% eliza +0.1% +7.7% 0.00 0.00 +0.0% event -0.8% +0.0% 0.09 0.10 -8.7% exp3_8 -0.8% +0.0% 0.15 0.15 +100.0% expert -0.2% +18.4% 0.00 0.00 +0.0% fem +1.5% +0.5% 0.02 0.02 +0.0% fft -0.9% +0.0% 0.02 0.03 +0.0% fft2 +3.7% +31.9% 0.05 0.05 +20.0% fibheaps -1.0% +0.3% 0.03 0.03 +0.0% fish -0.0% -0.0% 0.01 0.01 +0.0% fluid -1.3% +13.0% 0.01 0.01 +0.0% fulsom -0.2% -0.0% 0.19 0.20 +8.3% gamteb -0.7% -0.2% 0.03 0.04 +0.0% gcd -0.8% +0.0% 0.02 0.03 +0.0% gen_regexps +0.0% +2.2% 0.00 0.00 +0.0% genfft -0.8% -0.3% 0.03 0.03 +0.0% gg -0.6% +40.4% 0.01 0.02 +50.0% grep -1.8% +2.3% 0.00 0.00 +0.0% hidden -0.7% +3.5% +4.1% +7.6% +0.0% hpg -1.3% -1.3% 0.05 0.10 +0.0% ida -0.7% -1.0% 0.07 0.08 +11.1% infer -0.9% +0.5% 0.05 0.05 +30.0% integer -0.8% +1.1% +1.1% +2.3% +0.0% integrate -0.9% +56.2% 0.20 0.23 +1.0% kahan -0.9% +144.9% +77.6% +78.4% +0.0% knights -0.1% -0.4% 0.01 0.01 +0.0% lcss -0.7% +0.7% -24.3% -18.4% +1.9% life -0.2% +0.0% 0.16 0.16 +0.0% lift -0.0% +0.1% 0.00 0.00 +0.0% listcompr -0.1% -0.0% 0.06 0.06 +0.0% listcopy -0.1% -0.0% 0.06 0.06 +0.0% maillist +0.0% +1.9% 0.02 0.04 +16.5% mandel -0.8% +0.0% 0.05 0.05 +0.0% mandel2 -0.1% -4.0% 0.00 0.01 +0.0% minimax -0.2% -0.0% 0.00 0.00 +0.0% mkhprog -0.1% +1.1% 0.00 0.00 +0.0% multiplier -1.2% +0.0% 0.07 0.08 +0.0% nucleic2 -3.3% +19.5% 0.05 0.05 +0.0% para -0.0% +25.0% 0.22 0.23 +0.0% paraffins -0.8% +0.0% 0.06 0.08 +7.5% parser -1.3% +22.2% 0.03 0.03 +0.0% parstof -0.5% +4.6% 0.01 0.00 +0.0% pic +0.5% +0.0% 0.00 0.00 +0.0% power -1.0% +0.0% -0.5% +1.0% +0.0% pretty -0.2% +0.0% 0.00 0.00 +0.0% primes -0.8% -0.0% 0.04 0.05 +0.0% primetest -0.7% +0.0% 0.07 0.07 +0.0% prolog -0.2% +16.0% 0.00 0.00 +0.0% puzzle -0.1% -2.1% 0.09 0.10 +0.0% queens -0.8% +0.0% 0.02 0.02 +0.0% reptile -0.8% +0.6% 0.01 0.02 +0.0% rewrite -0.8% +0.7% 0.02 0.02 +0.0% rfib -1.0% +0.4% 0.02 0.02 +0.0% rsa -0.7% +2.5% 0.02 0.02 +0.0% scc -0.1% +0.0% 0.00 0.00 +0.0% sched -0.8% +0.0% 0.01 0.02 +0.0% scs -1.9% +0.8% -5.3% -2.7% +0.0% simple -0.3% -0.0% 0.15 0.16 +6.9% solid -0.7% +0.0% 0.09 0.09 +0.0% sorting +0.0% +55.9% 0.00 0.00 +0.0% sphere -0.9% -1.8% 0.04 0.04 +0.0% symalg -0.8% +0.3% 0.01 0.01 +0.0% tak -0.8% +0.9% 0.01 0.01 +0.0% transform -0.8% +0.0% -3.3% -5.7% +0.0% treejoin +0.1% +109.3% 0.15 0.17 -7.4% typecheck -0.8% +0.0% 0.14 0.15 +0.0% veritas -0.8% +0.0% 0.00 0.00 +0.0% wang -0.9% +0.0% 0.07 0.08 +0.0% wave4main -0.8% +1.8% 0.18 0.19 -7.1% wheel-sieve1 -0.7% +0.0% +0.0% +1.5% -12.5% wheel-sieve2 -0.7% +0.0% 0.11 0.12 +2.1% x2n1 +7.4% +43.3% 0.01 0.01 +200.0% -------------------------------------------------------------------------------- Min -3.3% -4.0% -24.3% -18.4% -12.5% Max +7.4% +144.9% +77.6% +78.4% +200.0% Geometric Mean -0.5% +5.5% +1.8% +4.3% +3.2% I haven't had time to look through the regressions yet, so if someone has time, please grab a benchmark that looks bad and have a look at the Core to see what's going on. I suggest starting with "kahan", which is a relatively simple benchmark. -- Johan

And here are the shootout benchmark results: -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- binary-trees -6.4% +0.0% -2.4% +0.0% -7.4% fannkuch-redux -0.8% +0.0% -3.6% -3.6% +0.0% fasta -0.8% +0.0% -4.8% -0.6% +0.0% n-body -6.2% -0.0% +28.5% +29.4% +0.0% pidigits -0.8% +0.0% -2.9% +2.9% +0.0% spectral-norm -6.3% -13.9% -0.0% -0.0% +0.0% -------------------------------------------------------------------------------- Min -6.4% -13.9% -4.8% -3.6% -7.4% Max -0.8% +0.0% +28.5% +29.4% +0.0% Geometric Mean -3.6% -2.5% +1.9% +4.2% -1.3% It might be worth looking into why n-body is 28% slower. P.S. I've now enabled the shootout benchmarks in nofib by default, as they're pretty quick to run and run on any machine. -- Johan

Hi Johan. I'm seeing much different numbers when I test for regressions.
Also 64-bit Linux.
Could you explain your method? Origin of the GHC/libraries you're measuring
and the options your running NoFib with? Thanks.
I'm using the 28 Jan ghc-7.6.2-x86_64-unknown-linux.tar.bz2 and
ec9377b1e51fd59e18 (Wed Feb 6 14:10:39 2013 +0000) for HEAD.
Thanks.
On Thu, Feb 7, 2013 at 9:18 PM, Johan Tibell
Hi all,
I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
-------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem
-------------------------------------------------------------------------------- anna -0.8% +1.5% 0.08 0.08 +0.0% ansi -0.5% +0.5% 0.00 0.00 +0.0% atom -0.9% -0.0% -3.1% -0.8% +0.0% awards -0.9% +0.1% 0.00 0.00 +0.0% banner +0.1% +2.2% 0.00 0.00 +0.0% bernouilli -0.6% +2.7% 0.12 0.13 +0.0% boyer -0.7% +0.0% 0.03 0.04 +0.0% boyer2 -0.1% +0.0% 0.01 0.01 +0.0% bspt -0.6% -0.0% 0.01 0.02 +0.0% cacheprof -0.9% +6.9% +0.8% +4.0% +0.0% calendar -0.9% +0.1% 0.00 0.00 +0.0% cichelli -0.1% -0.0% 0.06 0.06 +9.4% circsim -0.7% +0.1% +1.6% +7.0% +13.6% clausify -0.8% +0.0% 0.03 0.03 +0.0% comp_lab_zift -0.7% +0.0% 0.14 0.14 -12.5% compress -0.1% +0.0% 0.12 0.13 +0.0% compress2 -0.0% +0.0% 0.12 0.14 +2.3% constraints -0.8% +0.0% -3.3% -0.7% +0.0% cryptarithm1 -0.1% +0.0% +2.1% +4.1% +0.0% cryptarithm2 -0.0% -0.8% 0.01 0.01 +0.0% cse -0.0% -0.0% 0.00 0.00 +0.0% eliza +0.1% +7.7% 0.00 0.00 +0.0% event -0.8% +0.0% 0.09 0.10 -8.7% exp3_8 -0.8% +0.0% 0.15 0.15 +100.0% expert -0.2% +18.4% 0.00 0.00 +0.0% fem +1.5% +0.5% 0.02 0.02 +0.0% fft -0.9% +0.0% 0.02 0.03 +0.0% fft2 +3.7% +31.9% 0.05 0.05 +20.0% fibheaps -1.0% +0.3% 0.03 0.03 +0.0% fish -0.0% -0.0% 0.01 0.01 +0.0% fluid -1.3% +13.0% 0.01 0.01 +0.0% fulsom -0.2% -0.0% 0.19 0.20 +8.3% gamteb -0.7% -0.2% 0.03 0.04 +0.0% gcd -0.8% +0.0% 0.02 0.03 +0.0% gen_regexps +0.0% +2.2% 0.00 0.00 +0.0% genfft -0.8% -0.3% 0.03 0.03 +0.0% gg -0.6% +40.4% 0.01 0.02 +50.0% grep -1.8% +2.3% 0.00 0.00 +0.0% hidden -0.7% +3.5% +4.1% +7.6% +0.0% hpg -1.3% -1.3% 0.05 0.10 +0.0% ida -0.7% -1.0% 0.07 0.08 +11.1% infer -0.9% +0.5% 0.05 0.05 +30.0% integer -0.8% +1.1% +1.1% +2.3% +0.0% integrate -0.9% +56.2% 0.20 0.23 +1.0% kahan -0.9% +144.9% +77.6% +78.4% +0.0% knights -0.1% -0.4% 0.01 0.01 +0.0% lcss -0.7% +0.7% -24.3% -18.4% +1.9% life -0.2% +0.0% 0.16 0.16 +0.0% lift -0.0% +0.1% 0.00 0.00 +0.0% listcompr -0.1% -0.0% 0.06 0.06 +0.0% listcopy -0.1% -0.0% 0.06 0.06 +0.0% maillist +0.0% +1.9% 0.02 0.04 +16.5% mandel -0.8% +0.0% 0.05 0.05 +0.0% mandel2 -0.1% -4.0% 0.00 0.01 +0.0% minimax -0.2% -0.0% 0.00 0.00 +0.0% mkhprog -0.1% +1.1% 0.00 0.00 +0.0% multiplier -1.2% +0.0% 0.07 0.08 +0.0% nucleic2 -3.3% +19.5% 0.05 0.05 +0.0% para -0.0% +25.0% 0.22 0.23 +0.0% paraffins -0.8% +0.0% 0.06 0.08 +7.5% parser -1.3% +22.2% 0.03 0.03 +0.0% parstof -0.5% +4.6% 0.01 0.00 +0.0% pic +0.5% +0.0% 0.00 0.00 +0.0% power -1.0% +0.0% -0.5% +1.0% +0.0% pretty -0.2% +0.0% 0.00 0.00 +0.0% primes -0.8% -0.0% 0.04 0.05 +0.0% primetest -0.7% +0.0% 0.07 0.07 +0.0% prolog -0.2% +16.0% 0.00 0.00 +0.0% puzzle -0.1% -2.1% 0.09 0.10 +0.0% queens -0.8% +0.0% 0.02 0.02 +0.0% reptile -0.8% +0.6% 0.01 0.02 +0.0% rewrite -0.8% +0.7% 0.02 0.02 +0.0% rfib -1.0% +0.4% 0.02 0.02 +0.0% rsa -0.7% +2.5% 0.02 0.02 +0.0% scc -0.1% +0.0% 0.00 0.00 +0.0% sched -0.8% +0.0% 0.01 0.02 +0.0% scs -1.9% +0.8% -5.3% -2.7% +0.0% simple -0.3% -0.0% 0.15 0.16 +6.9% solid -0.7% +0.0% 0.09 0.09 +0.0% sorting +0.0% +55.9% 0.00 0.00 +0.0% sphere -0.9% -1.8% 0.04 0.04 +0.0% symalg -0.8% +0.3% 0.01 0.01 +0.0% tak -0.8% +0.9% 0.01 0.01 +0.0% transform -0.8% +0.0% -3.3% -5.7% +0.0% treejoin +0.1% +109.3% 0.15 0.17 -7.4% typecheck -0.8% +0.0% 0.14 0.15 +0.0% veritas -0.8% +0.0% 0.00 0.00 +0.0% wang -0.9% +0.0% 0.07 0.08 +0.0% wave4main -0.8% +1.8% 0.18 0.19 -7.1% wheel-sieve1 -0.7% +0.0% +0.0% +1.5% -12.5% wheel-sieve2 -0.7% +0.0% 0.11 0.12 +2.1% x2n1 +7.4% +43.3% 0.01 0.01 +200.0%
-------------------------------------------------------------------------------- Min -3.3% -4.0% -24.3% -18.4% -12.5% Max +7.4% +144.9% +77.6% +78.4% +200.0% Geometric Mean -0.5% +5.5% +1.8% +4.3% +3.2%
I haven't had time to look through the regressions yet, so if someone has time, please grab a benchmark that looks bad and have a look at the Core to see what's going on. I suggest starting with "kahan", which is a relatively simple benchmark.
-- Johan
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

On 08/02/13 10:10, Nicolas Frisby wrote:
Hi Johan. I'm seeing much different numbers when I test for regressions. Also 64-bit Linux. Could you explain your method? Origin of the GHC/libraries you're measuring and the options your running NoFib with? Thanks. I'm using the 28 Jan ghc-7.6.2-x86_64-unknown-linux.tar.bz2 and ec9377b1e51fd59e18 (Wed Feb 6 14:10:39 2013 +0000) for HEAD. Thanks.
The usual source of differences is -O vs. -O2, either for the benchmarks or for the libraries: you want GhcLibOpts=-O2 and NoFibHcOpts=-O2 in your mk/build.mk file. Cheers, Simon
On Thu, Feb 7, 2013 at 9:18 PM, Johan Tibell
mailto:johan.tibell@gmail.com> wrote: Hi all,
I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
-------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- anna -0.8% +1.5% 0.08 0.08 +0.0% ansi -0.5% +0.5% 0.00 0.00 +0.0% atom -0.9% -0.0% -3.1% -0.8% +0.0% awards -0.9% +0.1% 0.00 0.00 +0.0% banner +0.1% +2.2% 0.00 0.00 +0.0% bernouilli -0.6% +2.7% 0.12 0.13 +0.0% boyer -0.7% +0.0% 0.03 0.04 +0.0% boyer2 -0.1% +0.0% 0.01 0.01 +0.0% bspt -0.6% -0.0% 0.01 0.02 +0.0% cacheprof -0.9% +6.9% +0.8% +4.0% +0.0% calendar -0.9% +0.1% 0.00 0.00 +0.0% cichelli -0.1% -0.0% 0.06 0.06 +9.4% circsim -0.7% +0.1% +1.6% +7.0% +13.6% clausify -0.8% +0.0% 0.03 0.03 +0.0% comp_lab_zift -0.7% +0.0% 0.14 0.14 -12.5% compress -0.1% +0.0% 0.12 0.13 +0.0% compress2 -0.0% +0.0% 0.12 0.14 +2.3% constraints -0.8% +0.0% -3.3% -0.7% +0.0% cryptarithm1 -0.1% +0.0% +2.1% +4.1% +0.0% cryptarithm2 -0.0% -0.8% 0.01 0.01 +0.0% cse -0.0% -0.0% 0.00 0.00 +0.0% eliza +0.1% +7.7% 0.00 0.00 +0.0% event -0.8% +0.0% 0.09 0.10 -8.7% exp3_8 -0.8% +0.0% 0.15 0.15 +100.0% expert -0.2% +18.4% 0.00 0.00 +0.0% fem +1.5% +0.5% 0.02 0.02 +0.0% fft -0.9% +0.0% 0.02 0.03 +0.0% fft2 +3.7% +31.9% 0.05 0.05 +20.0% fibheaps -1.0% +0.3% 0.03 0.03 +0.0% fish -0.0% -0.0% 0.01 0.01 +0.0% fluid -1.3% +13.0% 0.01 0.01 +0.0% fulsom -0.2% -0.0% 0.19 0.20 +8.3% gamteb -0.7% -0.2% 0.03 0.04 +0.0% gcd -0.8% +0.0% 0.02 0.03 +0.0% gen_regexps +0.0% +2.2% 0.00 0.00 +0.0% genfft -0.8% -0.3% 0.03 0.03 +0.0% gg -0.6% +40.4% 0.01 0.02 +50.0% grep -1.8% +2.3% 0.00 0.00 +0.0% hidden -0.7% +3.5% +4.1% +7.6% +0.0% hpg -1.3% -1.3% 0.05 0.10 +0.0% ida -0.7% -1.0% 0.07 0.08 +11.1% infer -0.9% +0.5% 0.05 0.05 +30.0% integer -0.8% +1.1% +1.1% +2.3% +0.0% integrate -0.9% +56.2% 0.20 0.23 +1.0% kahan -0.9% +144.9% +77.6% +78.4% +0.0% knights -0.1% -0.4% 0.01 0.01 +0.0% lcss -0.7% +0.7% -24.3% -18.4% +1.9% life -0.2% +0.0% 0.16 0.16 +0.0% lift -0.0% +0.1% 0.00 0.00 +0.0% listcompr -0.1% -0.0% 0.06 0.06 +0.0% listcopy -0.1% -0.0% 0.06 0.06 +0.0% maillist +0.0% +1.9% 0.02 0.04 +16.5% mandel -0.8% +0.0% 0.05 0.05 +0.0% mandel2 -0.1% -4.0% 0.00 0.01 +0.0% minimax -0.2% -0.0% 0.00 0.00 +0.0% mkhprog -0.1% +1.1% 0.00 0.00 +0.0% multiplier -1.2% +0.0% 0.07 0.08 +0.0% nucleic2 -3.3% +19.5% 0.05 0.05 +0.0% para -0.0% +25.0% 0.22 0.23 +0.0% paraffins -0.8% +0.0% 0.06 0.08 +7.5% parser -1.3% +22.2% 0.03 0.03 +0.0% parstof -0.5% +4.6% 0.01 0.00 +0.0% pic +0.5% +0.0% 0.00 0.00 +0.0% power -1.0% +0.0% -0.5% +1.0% +0.0% pretty -0.2% +0.0% 0.00 0.00 +0.0% primes -0.8% -0.0% 0.04 0.05 +0.0% primetest -0.7% +0.0% 0.07 0.07 +0.0% prolog -0.2% +16.0% 0.00 0.00 +0.0% puzzle -0.1% -2.1% 0.09 0.10 +0.0% queens -0.8% +0.0% 0.02 0.02 +0.0% reptile -0.8% +0.6% 0.01 0.02 +0.0% rewrite -0.8% +0.7% 0.02 0.02 +0.0% rfib -1.0% +0.4% 0.02 0.02 +0.0% rsa -0.7% +2.5% 0.02 0.02 +0.0% scc -0.1% +0.0% 0.00 0.00 +0.0% sched -0.8% +0.0% 0.01 0.02 +0.0% scs -1.9% +0.8% -5.3% -2.7% +0.0% simple -0.3% -0.0% 0.15 0.16 +6.9% solid -0.7% +0.0% 0.09 0.09 +0.0% sorting +0.0% +55.9% 0.00 0.00 +0.0% sphere -0.9% -1.8% 0.04 0.04 +0.0% symalg -0.8% +0.3% 0.01 0.01 +0.0% tak -0.8% +0.9% 0.01 0.01 +0.0% transform -0.8% +0.0% -3.3% -5.7% +0.0% treejoin +0.1% +109.3% 0.15 0.17 -7.4% typecheck -0.8% +0.0% 0.14 0.15 +0.0% veritas -0.8% +0.0% 0.00 0.00 +0.0% wang -0.9% +0.0% 0.07 0.08 +0.0% wave4main -0.8% +1.8% 0.18 0.19 -7.1% wheel-sieve1 -0.7% +0.0% +0.0% +1.5% -12.5% wheel-sieve2 -0.7% +0.0% 0.11 0.12 +2.1% x2n1 +7.4% +43.3% 0.01 0.01 +200.0% -------------------------------------------------------------------------------- Min -3.3% -4.0% -24.3% -18.4% -12.5% Max +7.4% +144.9% +77.6% +78.4% +200.0% Geometric Mean -0.5% +5.5% +1.8% +4.3% +3.2%
I haven't had time to look through the regressions yet, so if someone has time, please grab a benchmark that looks bad and have a look at the Core to see what's going on. I suggest starting with "kahan", which is a relatively simple benchmark.
-- Johan
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org mailto:ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

On Fri, Feb 8, 2013 at 1:28 PM, Simon Marlow
On 08/02/13 10:10, Nicolas Frisby wrote:
Hi Johan. I'm seeing much different numbers when I test for regressions. Also 64-bit Linux. Could you explain your method? Origin of the GHC/libraries you're measuring and the options your running NoFib with? Thanks. I'm using the 28 Jan ghc-7.6.2-x86_64-unknown-**linux.tar.bz2 and ec9377b1e51fd59e18 (Wed Feb 6 14:10:39 2013 +0000) for HEAD. Thanks.
The usual source of differences is -O vs. -O2, either for the benchmarks or for the libraries: you want GhcLibOpts=-O2 and NoFibHcOpts=-O2 in your mk/build.mk file.
Cheers, Simon
I figured Johan is doing O2 for libraries and programs. I have done libraries at O2, programs at O1, which likely does explain the difference. I'm still in a holding pattern in case there's also some other setting he's using. Then I'll run both variations on the programs. Thanks much.
On Thu, Feb 7, 2013 at 9:18 PM, Johan Tibell
mailto:johan.tibell@gmail.com**> wrote: Hi all,
I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
------------------------------**------------------------------** -------------------- Program Size Allocs Runtime Elapsed TotalMem ------------------------------**------------------------------** -------------------- anna -0.8% +1.5% 0.08 0.08 +0.0% ansi -0.5% +0.5% 0.00 0.00 +0.0% atom -0.9% -0.0% -3.1% -0.8% +0.0% awards -0.9% +0.1% 0.00 0.00 +0.0% banner +0.1% +2.2% 0.00 0.00 +0.0% bernouilli -0.6% +2.7% 0.12 0.13 +0.0% boyer -0.7% +0.0% 0.03 0.04 +0.0% boyer2 -0.1% +0.0% 0.01 0.01 +0.0% bspt -0.6% -0.0% 0.01 0.02 +0.0% cacheprof -0.9% +6.9% +0.8% +4.0% +0.0% calendar -0.9% +0.1% 0.00 0.00 +0.0% cichelli -0.1% -0.0% 0.06 0.06 +9.4% circsim -0.7% +0.1% +1.6% +7.0% +13.6% clausify -0.8% +0.0% 0.03 0.03 +0.0% comp_lab_zift -0.7% +0.0% 0.14 0.14 -12.5% compress -0.1% +0.0% 0.12 0.13 +0.0% compress2 -0.0% +0.0% 0.12 0.14 +2.3% constraints -0.8% +0.0% -3.3% -0.7% +0.0% cryptarithm1 -0.1% +0.0% +2.1% +4.1% +0.0% cryptarithm2 -0.0% -0.8% 0.01 0.01 +0.0% cse -0.0% -0.0% 0.00 0.00 +0.0% eliza +0.1% +7.7% 0.00 0.00 +0.0% event -0.8% +0.0% 0.09 0.10 -8.7% exp3_8 -0.8% +0.0% 0.15 0.15 +100.0% expert -0.2% +18.4% 0.00 0.00 +0.0% fem +1.5% +0.5% 0.02 0.02 +0.0% fft -0.9% +0.0% 0.02 0.03 +0.0% fft2 +3.7% +31.9% 0.05 0.05 +20.0% fibheaps -1.0% +0.3% 0.03 0.03 +0.0% fish -0.0% -0.0% 0.01 0.01 +0.0% fluid -1.3% +13.0% 0.01 0.01 +0.0% fulsom -0.2% -0.0% 0.19 0.20 +8.3% gamteb -0.7% -0.2% 0.03 0.04 +0.0% gcd -0.8% +0.0% 0.02 0.03 +0.0% gen_regexps +0.0% +2.2% 0.00 0.00 +0.0% genfft -0.8% -0.3% 0.03 0.03 +0.0% gg -0.6% +40.4% 0.01 0.02 +50.0% grep -1.8% +2.3% 0.00 0.00 +0.0% hidden -0.7% +3.5% +4.1% +7.6% +0.0% hpg -1.3% -1.3% 0.05 0.10 +0.0% ida -0.7% -1.0% 0.07 0.08 +11.1% infer -0.9% +0.5% 0.05 0.05 +30.0% integer -0.8% +1.1% +1.1% +2.3% +0.0% integrate -0.9% +56.2% 0.20 0.23 +1.0% kahan -0.9% +144.9% +77.6% +78.4% +0.0% knights -0.1% -0.4% 0.01 0.01 +0.0% lcss -0.7% +0.7% -24.3% -18.4% +1.9% life -0.2% +0.0% 0.16 0.16 +0.0% lift -0.0% +0.1% 0.00 0.00 +0.0% listcompr -0.1% -0.0% 0.06 0.06 +0.0% listcopy -0.1% -0.0% 0.06 0.06 +0.0% maillist +0.0% +1.9% 0.02 0.04 +16.5% mandel -0.8% +0.0% 0.05 0.05 +0.0% mandel2 -0.1% -4.0% 0.00 0.01 +0.0% minimax -0.2% -0.0% 0.00 0.00 +0.0% mkhprog -0.1% +1.1% 0.00 0.00 +0.0% multiplier -1.2% +0.0% 0.07 0.08 +0.0% nucleic2 -3.3% +19.5% 0.05 0.05 +0.0% para -0.0% +25.0% 0.22 0.23 +0.0% paraffins -0.8% +0.0% 0.06 0.08 +7.5% parser -1.3% +22.2% 0.03 0.03 +0.0% parstof -0.5% +4.6% 0.01 0.00 +0.0% pic +0.5% +0.0% 0.00 0.00 +0.0% power -1.0% +0.0% -0.5% +1.0% +0.0% pretty -0.2% +0.0% 0.00 0.00 +0.0% primes -0.8% -0.0% 0.04 0.05 +0.0% primetest -0.7% +0.0% 0.07 0.07 +0.0% prolog -0.2% +16.0% 0.00 0.00 +0.0% puzzle -0.1% -2.1% 0.09 0.10 +0.0% queens -0.8% +0.0% 0.02 0.02 +0.0% reptile -0.8% +0.6% 0.01 0.02 +0.0% rewrite -0.8% +0.7% 0.02 0.02 +0.0% rfib -1.0% +0.4% 0.02 0.02 +0.0% rsa -0.7% +2.5% 0.02 0.02 +0.0% scc -0.1% +0.0% 0.00 0.00 +0.0% sched -0.8% +0.0% 0.01 0.02 +0.0% scs -1.9% +0.8% -5.3% -2.7% +0.0% simple -0.3% -0.0% 0.15 0.16 +6.9% solid -0.7% +0.0% 0.09 0.09 +0.0% sorting +0.0% +55.9% 0.00 0.00 +0.0% sphere -0.9% -1.8% 0.04 0.04 +0.0% symalg -0.8% +0.3% 0.01 0.01 +0.0% tak -0.8% +0.9% 0.01 0.01 +0.0% transform -0.8% +0.0% -3.3% -5.7% +0.0% treejoin +0.1% +109.3% 0.15 0.17 -7.4% typecheck -0.8% +0.0% 0.14 0.15 +0.0% veritas -0.8% +0.0% 0.00 0.00 +0.0% wang -0.9% +0.0% 0.07 0.08 +0.0% wave4main -0.8% +1.8% 0.18 0.19 -7.1% wheel-sieve1 -0.7% +0.0% +0.0% +1.5% -12.5% wheel-sieve2 -0.7% +0.0% 0.11 0.12 +2.1% x2n1 +7.4% +43.3% 0.01 0.01 +200.0% ------------------------------**------------------------------** -------------------- Min -3.3% -4.0% -24.3% -18.4% -12.5% Max +7.4% +144.9% +77.6% +78.4% +200.0% Geometric Mean -0.5% +5.5% +1.8% +4.3% +3.2%
I haven't had time to look through the regressions yet, so if someone has time, please grab a benchmark that looks bad and have a look at the Core to see what's going on. I suggest starting with "kahan", which is a relatively simple benchmark.
-- Johan
______________________________**_________________ ghc-devs mailing list ghc-devs@haskell.org mailto:ghc-devs@haskell.org http://www.haskell.org/**mailman/listinfo/ghc-devshttp://www.haskell.org/mailman/listinfo/ghc-devs
______________________________**_________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/**mailman/listinfo/ghc-devshttp://www.haskell.org/mailman/listinfo/ghc-devs

On Fri, Feb 8, 2013 at 8:31 AM, Nicolas Frisby
I figured Johan is doing O2 for libraries and programs. I have done libraries at O2, programs at O1, which likely does explain the difference.
I'm still in a holding pattern in case there's also some other setting he's using.
Then I'll run both variations on the programs.
Thanks much.
I use "BuildFlavour = perf" for the compiler and otherwise don't specify any additional options (including to nofib), which I guess implies that the benchmarks are compiled with -O? Then I do cd nofib make clean && make boot && make -k 2>&1 | tee log1 make clean && make boot WithNofibHc=ghc-7.6.2 && make -k WithNofibHc=ghc-7.6.2 2>&1 | tee log2 nofib-analyse/nofib-analyse log1 log2 I followed the instructions at http://hackage.haskell.org/trac/ghc/wiki/Building/RunningNoFib If the defaults for nofib are wrong (e.g. if we want -O2 by default) we should tweak the settings so people get sensible results by default.

On Fri, Feb 8, 2013 at 8:47 AM, Johan Tibell
If the defaults for nofib are wrong (e.g. if we want -O2 by default) we should tweak the settings so people get sensible results by default.
I've now changed the default to -O2. I should rerun all the benchmarks again with 7.6.1, 7.6.2, and HEAD. -- Johan

On Thu, Feb 7, 2013 at 1:18 PM, Johan Tibell
I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
It would be interesting to see the numbers compared to 7.6.1, if possible, as I've seen some big performance regressions between 7.6.1 and 7.6.2.

I've been running 7.0.1 all through HEAD. I'd like to compare my setup with
Johan's before making any claims.
On Feb 8, 2013 10:33 AM, "Bryan O'Sullivan"
On Thu, Feb 7, 2013 at 1:18 PM, Johan Tibell
wrote: I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
It would be interesting to see the numbers compared to 7.6.1, if possible, as I've seen some big performance regressions between 7.6.1 and 7.6.2. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

I've been running 7.0.1 all through HEAD. I'd like to compare my setup with
Johan's before making any claims.
On Feb 8, 2013 10:33 AM, "Bryan O'Sullivan"
I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
It would be interesting to see the numbers compared to 7.6.1, if possible, as I've seen some big performance regressions between 7.6.1 and 7.6.2. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

I'm still seeing different numbers from Johan, so I'm just going to throw
up my hands and proceed separately for now.
I'm sharing my Excel spreadsheet. It contains:
* My 8 Feb run (libraries O2, programs O1, 10 iterations)
* Johans' first (comparable) set of 7.6.2 -> HEAD numbers (O2, O1, 5
iterations)
* My 11 Feb run (libraries O2, programs O2, 30 iterations)
* some analysis, indicating that his and my numbers do not correlate
Info about my runs:
* 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.2.1, 7.2.2, 7.4.1, 7.4.2, 7.6.1, 7.6.2,
HEAD (ec9477b1e51)
* I using the NoFib make to build the tests, but not to actually execute
them.
Here's why I don't simply use the NoFib makefiles for everything. That
would run an entire suite for each version: all of 7.0.1, then all of
7.0.2, etc.
I wanted better time locality, since my test machine (though quite
capable - Marlow and SPJ might know the specs), has a few other users and
I've been seeing plenty of noise in the measurements. So now I use NoFib's
makefiles to build all of the tests and generate the test-running command,
but I cache the run command and then interleave the execution of each GHC
version's executable. In other words:
using nofib: outer loop = GHC version, inner loop = each program
my rig: outer loop = each program; inner loop = GHC version
NB I do all the building before entering that nested loop.
So I think I end up with less noise in the data.
I have an additional loop between those two loops that controls the
iterations. My rigorous data set (11 Feb) uses 30 iterations.
Here are the big swings I'm seeing...
Indicated allocation regressions that seem to still affect HEAD:
NB The 'swing' column is the subtraction (of percentage points) between
HEAD today and the best job GHC ever did on that program. The 'concrete'
column converts 'swing' to the actual difference in allocation.
7.0.1 7.0.* 7.2.* 7.4.1 7.4.2 7.6.* HEAD
swing concrete
atom 1,372,769,928 0.0% 18.5% 18.4% 18.4% 18.4% 18.4%
18% 252,589,667
exp3_8 3,500,231,456 0.0% 68.2% 68.2% 68.2% 68.2% 68.2%
68% 2,387,157,853
integrate 1,092,339,840 0.0% -12.3% -13.8% -57.3% 39.0% -11.0%
46% 505,753,346
lcss 1,272,240,016 0.0% 22.5% 22.5% 22.5% 22.5% 22.2%
22% 282,437,284
mandel 244,936,399 0.0% -9.8% 15.9% 24.1% 24.1% 24.0%
34% 82,788,503
primes 861,817,344 0.0% 57.9% 57.9% 57.9% 57.9% 57.9%
58% 498,992,242
rfib 78,240 4.2% 48.6% 49.7% 48.0% 48.8% 48.2%
48% 37,712
tak 91,304 3.4% 24.7% 24.2% 18.7% 15.8% 14.8%
15% 13,513
wave4main 151,494,392 0.0% 20.3% 22.5% 22.5% 22.5% 20.3%
20% 30,753,362
wheel-sieve1 24,131,096 0.0% -1.6% -1.6% -1.6% 99.2% 99.2%
101% 24,324,145
7.0 to 7.2 and 7.4 to 7.6 seem to be the major players.
Indicated allocation regressions that seem to still affect HEAD:
7.0.1 7.0.2 7.0.3 7.0.4 7.2.1 7.2.2 7.4.1 7.4.2
7.6.1 7.6.2 HEAD swing concrete
ansi 1.66 0.9% 0.9% -1.0% -0.3% 0.9% -14.1% -16.7%
-1.1% 0.5% 5.6% 22.3% 0.37
atom 2.83 1.2% 1.4% -0.2% 8.7% 8.0% 11.3% 9.2%
11.5% 8.7% 9.7% 9.9% 0.28
exp3_8 3.40 0.1% 0.1% -0.9% 19.2% 19.7% 20.6% 23.8%
20.3% 20.4% 19.5% 20.4% 0.69
genfft 0.90 3.1% 3.1% 2.9% 3.1% 2.0% 5.8% 4.5%
3.0% -2.1% 7.4% 9.5% 0.09
hpg 0.28 0.4% 0.1% -34.3% 4.0% -8.6% -11.8% -52.1%
-46.0% -51.2% -16.8% 35.3% 0.10
integrate 0.74 -12.2% -12.2% -20.7% -17.0% -14.7% -14.4% -66.7%
58.4% 63.4% -14.5% 52.2% 0.39
knights 1.82 0.2% 0.0% 1.0% 2.8% -3.6% 1.5% 9.0%
-7.0% 0.9% 5.1% 12.1% 0.22
lcss 2.81 -0.1% -0.5% -6.0% 6.1% 6.3% 6.4% -0.1%
0.0% -0.4% 24.2% 30.2% 0.85
maillist 0.40 -0.5% 0.7% -63.1% 9.5% 9.7% -10.1% -76.2%
-74.0% -75.1% -12.6% 63.6% 0.25
mandel 0.24 -2.6% -2.4% -1.8% -9.7% -11.3% 3.6% 8.3%
10.9% 14.5% 10.4% 21.7% 0.05
wang 1.00 1.4% 1.2% -3.3% 1.0% 2.0% 1.9% -3.7%
-1.3% -1.5% 7.0% 10.7% 0.11
More noisy, of course :( The major players from allocation show up
again. One new difference is 7.6 -> HEAD, where we seem to lose ~50% in hpg
and maillist.
I am a bit worried because I see no *huge* swings like Johan reported.
Here's an example excerpt from the NoFib makefile's log when building the
programs:
HC_OPTS = -H32m -O -O -Rghc-timing -package array -H32m -hisuf hi -hisuf hi
-hcsuf hc -osuf o -package-db
/home/t-nicof/installs/ghc-7.7.20130206/lib/ghc-7.7.20130206/package.conf.d
-O2 -rtsopts
Does anything look particularly suspicious there? (I used -package-db just
to be safe; haven't ran multiple GHC versions too often.)
I might investigate some of these myself; it depends on how we allocate my
internship time.
Please feel free to look into what's happening in some of these! Especially
if you have some of the major compiler changes between versions in your
head... :)
Thanks. HTH.
On Fri, Feb 8, 2013 at 8:41 PM, Nicolas Frisby
I've been running 7.0.1 all through HEAD. I'd like to compare my setup with Johan's before making any claims. On Feb 8, 2013 10:33 AM, "Bryan O'Sullivan"
wrote: On Thu, Feb 7, 2013 at 1:18 PM, Johan Tibell
wrote: I just ran nofib on current HEAD and compared it to 7.6.2 on my 64-bit Linux machine. There are some regressions I think we should look into before a release:
It would be interesting to see the numbers compared to 7.6.1, if possible, as I've seen some big performance regressions between 7.6.1 and 7.6.2. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

Hi Nicolas! I tried to reproduce the difference between 7.0.4 and 7.6.2 on the exp3_8, wheel-sieve1, and primes and couldn't get the same percent difference as you. We need to reconcile these differences somehow. Lets start with more exact machine specs. I have a: $ cat /proc/cpuinfo processor : 7 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz stepping : 9 microcode : 0x12 cpu MHz : 1600.000 cache size : 8192 KB ... $ uname -a Linux johantibell.com 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux And GHC versions: $ ghc-7.0.4 --info [("Project name","The Glorious Glasgow Haskell Compilation System") ,("Project version","7.0.4") ,("Booter version","6.12.1") ,("Stage","2") ,("Build platform","x86_64-unknown-linux") ,("Host platform","x86_64-unknown-linux") ,("Target platform","x86_64-unknown-linux") ,("Have interpreter","YES") ,("Object splitting","YES") ,("Have native code generator","YES") ,("Have llvm code generator","YES") ,("Support SMP","YES") ,("Unregisterised","NO") ,("Tables next to code","YES") ,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn thr_debug_dyn") ,("Leading underscore","NO") ,("Debug on","False") ,("LibDir","/usr/local/lib/ghc-7.0.4") ,("Global Package DB","/usr/local/lib/ghc-7.0.4/package.conf.d") ,("C compiler flags","[\"-fno-stack-protector\"]") ,("Gcc Linker flags","[]") ,("Ld Linker flags","[]") ] $ ghc-7.6.2 --info [("Project name","The Glorious Glasgow Haskell Compilation System") ,("GCC extra via C opts"," -fwrapv") ,("C compiler command","/usr/bin/gcc") ,("C compiler flags"," -fno-stack-protector ") ,("ar command","/usr/bin/ar") ,("ar flags","q") ,("ar supports at file","@ArSupportsAtFile@") ,("touch command","touch") ,("dllwrap command","/bin/false") ,("windres command","/bin/false") ,("perl command","/usr/bin/perl") ,("target os","OSLinux") ,("target arch","ArchX86_64") ,("target word size","8") ,("target has GNU nonexec stack","True") ,("target has .ident directive","True") ,("target has subsections via symbols","False") ,("LLVM llc command","llc") ,("LLVM opt command","opt") ,("Project version","7.6.2") ,("Booter version","7.4.1") ,("Stage","2") ,("Build platform","x86_64-unknown-linux") ,("Host platform","x86_64-unknown-linux") ,("Target platform","x86_64-unknown-linux") ,("Have interpreter","YES") ,("Object splitting supported","YES") ,("Have native code generator","YES") ,("Support SMP","YES") ,("Unregisterised","NO") ,("Tables next to code","YES") ,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn thr_debug_dyn") ,("Leading underscore","NO") ,("Debug on","False") ,("LibDir","/usr/local/lib/ghc-7.6.2") ,("Global Package DB","/usr/local/lib/ghc-7.6.2/package.conf.d") ,("Gcc Linker flags","[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\"]") ,("Ld Linker flags","[\"--hash-size=31\",\"--reduce-memory-overheads\"]") ] I ran the benchmarks by running e.g.: $ cd nofib/imaginary/sieve-wheel1 $ make clean && make boot WithNofibHc=ghc-${VERSION} && make WithNofibHc=ghc-${VERSION} Could you please try to run the "imaginary" benchmarks using exactly these commands and report the difference you see between 7.0.4 and 7.6.2. Here's what I see. 7.0.4 vs 7.6.2: -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- bernouilli +3.3% +0.2% 0.12 0.13 +0.0% exp3_8 +1.1% +53.7% 0.14 0.14 +300.0% gen_regexps +18.7% +3.9% 0.00 0.00 +0.0% integrate -0.1% +39.0% 0.21 0.23 +0.0% kahan +1.7% +98.6% +9.9% +7.3% +0.0% paraffins +1.3% -1.2% 0.06 0.08 +0.0% primes +1.4% +64.7% 0.04 0.05 +50.0% queens +0.8% -0.5% 0.02 0.02 +0.0% rfib +1.7% +42.8% 0.02 0.02 +0.0% tak +0.9% +12.0% 0.01 0.01 +0.0% wheel-sieve1 +0.8% +66.6% -4.6% -5.8% -12.5% wheel-sieve2 +0.9% +0.0% 0.12 0.13 +0.0% x2n1 +10.3% +87.3% 0.00 0.01 +200.0% -------------------------------------------------------------------------------- Min -0.1% -1.2% -4.6% -5.8% -12.5% Max +18.7% +98.6% +9.9% +7.3% +300.0% Geometric Mean +3.2% +31.7% +2.4% +0.5% +23.6% -- Johan

Thanks for such specific requests, and great idea to focus on imaginary!
Outline: SUMMARY, HARDWARE, NUMBERS
== THE SUMMARY ==
* I still get quite different numbers.
* For wheel-sieve1 and kahan, we're in the same ballpark.
* Though my kahan shows half as much allocation increase. Which
hardware difference would explain this?
* For bernoiulli, exp3_8, and integrate, my nofib-analyse shows percent
changes in Runtime, where as yours shows absolutes. I've included my
absolute tables below; comparing those, we still get appreciable
differences.
* I've included my mode=slow numbers.
* We have some significant hardware differences.
* My machine claims 32 processors, though it smells like it has 8 chips
with 8 cores each. I'll ask SPJ or Mainland.
* My cache size is much smaller than yours: 512 KB versus 8 MB.
* My CPU frequency is 2GHz compared to your 3.4GHz.
* How do we want to handle hardware diversity like we're seeing in these
regular benchmark runs?
* Are the different behaviors we're seeing expected for our hardware
differences or bugs of some sort?
Thanks, Johan.
== THE HARDWARE ==
$ cat /proc/cpuinfo
processor : 0 # counts up to 31, with physical id and core id pairs
duplicated once
vendor_id : AuthenticAMD
cpu family : 16
model : 9
model name : AMD Opteron(tm) Processor 6128
stepping : 1
microcode : 0x10000d4
cpu MHz : 1999.949
cache size : 512 KB
physical id : 0 # counts up to 3 for each core id, twice
siblings : 8
core id : 0 # counts up to 3, for each physical id, twice
cpu cores : 8
apicid : 0 # varies
initial apicid : 0 # varies
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb
rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid
amd_dcm pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy
abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr npt lbrv
svm_lock nrip_save pausefilter
bogomips : 3999.89
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
physical id and core id exhaust combinations of {0,1,2,3}, twice for some
reason as processor counts from 0 to 31. I would have suspected 64
processors, given the sibling and cpu cores. Am I tripping on a common
misconception?
I included the rest of the info because I still get different numbers than
you do.
$ uname -a
Linux cam-05-unx 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5 17:42:16 UTC
2012 x86_64 x86_64 x86_64 GNU/Linux
$ VERSION=7.0.4;
HC=/home/t-nicof/installs/ghc-${VERSION}/bin/ghc-${VERSION}; $HC --info
[("Project name","The Glorious Glasgow Haskell Compilation System")
,("Project version","7.0.4")
,("Booter version","6.12.1")
,("Stage","2")
,("Build platform","x86_64-unknown-linux")
,("Host platform","x86_64-unknown-linux")
,("Target platform","x86_64-unknown-linux")
,("Have interpreter","YES")
,("Object splitting","YES")
,("Have native code generator","YES")
,("Have llvm code generator","YES")
,("Support SMP","YES")
,("Unregisterised","NO")
,("Tables next to code","YES")
,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn
thr_debug_dyn")
,("Leading underscore","NO")
,("Debug on","False")
,("LibDir","/home/t-nicof/installs/ghc-7.0.4/lib/ghc-7.0.4")
,("Global Package
DB","/home/t-nicof/installs/ghc-7.0.4/lib/ghc-7.0.4/package.conf.d")
,("C compiler flags","[\"-fno-stack-protector\"]")
,("Gcc Linker flags","[]")
,("Ld Linker flags","[]")
$ VERSION=7.6.2;
HC=/home/t-nicof/installs/ghc-${VERSION}/bin/ghc-${VERSION}; $HC --info
[("Project name","The Glorious Glasgow Haskell Compilation System")
,("GCC extra via C opts"," -fwrapv")
,("C compiler command","/usr/bin/gcc")
,("C compiler flags"," -fno-stack-protector ")
,("ar command","/usr/bin/ar")
,("ar flags","q")
,("ar supports at file","@ArSupportsAtFile@")
,("touch command","touch")
,("dllwrap command","/bin/false")
,("windres command","/bin/false")
,("perl command","/usr/bin/perl")
,("target os","OSLinux")
,("target arch","ArchX86_64")
,("target word size","8")
,("target has GNU nonexec stack","True")
,("target has .ident directive","True")
,("target has subsections via symbols","False")
,("LLVM llc command","llc")
,("LLVM opt command","opt")
,("Project version","7.6.2")
,("Booter version","7.4.1")
,("Stage","2")
,("Build platform","x86_64-unknown-linux")
,("Host platform","x86_64-unknown-linux")
,("Target platform","x86_64-unknown-linux")
,("Have interpreter","YES")
,("Object splitting supported","YES")
,("Have native code generator","YES")
,("Support SMP","YES")
,("Unregisterised","NO")
,("Tables next to code","YES")
,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn
thr_debug_dyn")
,("Leading underscore","NO")
,("Debug on","False")
,("LibDir","/home/t-nicof/installs/ghc-7.6/lib/ghc-7.6.2")
,("Global Package
DB","/home/t-nicof/installs/ghc-7.6/lib/ghc-7.6.2/package.conf.d")
,("Gcc Linker
flags","[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\"]")
,("Ld Linker flags","[\"--hash-size=31\",\"--reduce-memory-overheads\"]")
]
== THE NUMBERS ==
With VERSION=7.0.4 or VERSION=7.6.2. (I'm not relying on $PATH, is the only
difference.)
$ HC=/home/t-nicof/installs/ghc-${VERSION}/bin/ghc-${VERSION}; (make clean
&& make boot WithNofibHc=${HC} && make WithNofibHc=${HC}) >& log-${VERSION}
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
bernouilli +3.3% +0.2% +7.2% +7.4% +0.0%
exp3_8 +1.1% +53.7% +55.4% +57.5% +300.0%
gen_regexps +18.6% +3.9% 0.00 0.00 +0.0%
integrate -0.1% +39.0% +110.2% +88.5% +0.0%
kahan +1.7% +41.8% +8.2% +8.0% +0.0%
paraffins +1.3% -1.2% -3.6% -0.8% +0.0%
primes +1.4% +64.7% 0.11 0.11 +50.0%
queens +0.8% -0.2% 0.02 0.02 +0.0%
rfib +1.7% +42.8% 0.03 0.03 +0.0%
tak +0.9% +12.0% 0.02 0.02 +0.0%
wheel-sieve1 +1.4% +66.6% -4.0% -4.3% -17.6%
wheel-sieve2 +1.4% +0.0% -0.2% -2.1% +0.0%
x2n1 +10.3% +41.7% 0.01 0.01 +200.0%
--------------------------------------------------------------------------------
Min -0.1% -1.2% -4.0% -4.3% -17.6%
Max +18.6% +66.6% +110.2% +88.5% +300.0%
Geometric Mean +3.3% +25.6% +19.6% +18.1% +23.0%
I did it twice.
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
bernouilli +3.3% +0.2% +7.0% +7.1% +0.0%
exp3_8 +1.1% +53.7% +56.6% +57.8% +300.0%
gen_regexps +18.6% +3.9% 0.00 0.00 +0.0%
integrate -0.1% +39.0% +102.1% +86.2% +0.0%
kahan +1.7% +41.8% +9.5% +8.9% +0.0%
paraffins +1.3% -1.2% -0.6% -4.8% +0.0%
primes +1.4% +64.7% 0.11 0.11 +50.0%
queens +0.8% -0.2% 0.02 0.02 +0.0%
rfib +1.7% +42.8% 0.03 0.03 +0.0%
tak +0.9% +12.0% 0.02 0.02 +0.0%
wheel-sieve1 +1.4% +66.6% -4.4% -4.3% -17.6%
wheel-sieve2 +1.4% +0.0% -1.1% -2.8% +0.0%
x2n1 +10.3% +41.7% 0.01 0.01 +200.0%
--------------------------------------------------------------------------------
Min -0.1% -1.2% -4.4% -4.8% -17.6%
Max +18.6% +66.6% +102.1% +86.2% +300.0%
Geometric Mean +3.3% +25.6% +19.5% +17.2% +23.0%
Maybe your machine is too fast for nofib-analyse to include exp3_8.
Allocations
-------------------------------------------------------------------------------
Program log-7.0.4 log-7.6.2
-------------------------------------------------------------------------------
bernouilli 303890616 +0.2%
exp3_8 389023528 +53.7%
gen_regexps 304768 +3.9%
integrate 546206856 +39.0%
kahan 700842656 +41.8%
paraffins 56201680 -1.2%
primes 65899520 +64.7%
queens 17387888 -0.2%
rfib 81176 +42.8%
tak 94408 +12.0%
wheel-sieve1 14620056 +66.6%
wheel-sieve2 88734064 +0.0%
x2n1 2491928 +41.7%
-1 s.d. ----- +3.0%
+1 s.d. ----- +53.2%
Average ----- +25.6%
Run Time
-------------------------------------------------------------------------------
Program log-7.0.4 log-7.6.2
-------------------------------------------------------------------------------
bernouilli 0.28 +7.2%
exp3_8 0.21 +55.4%
gen_regexps 0.00 0.00
integrate 0.34 +110.2%
kahan 1.07 +8.2%
paraffins 0.22 -3.6%
primes 0.10 0.11
queens 0.02 0.02
rfib 0.03 0.03
tak 0.01 0.02
wheel-sieve1 0.68 -4.0%
wheel-sieve2 0.37 -0.2%
x2n1 0.00 0.01
-1 s.d. ----- -9.3%
+1 s.d. ----- +57.7%
Average ----- +19.6%
And here are the results using the "mode=slow" Nofib option. Only
bernouilli and gen_regexps do not have SLOW_OPTS defined in their Makefile.
It's odd that gen_regexps shows such drastic change then...
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
bernouilli +3.3% +0.2% +6.7% +7.4% +0.0%
exp3_8 +1.1% +68.2% +20.2% +20.3% +100.0%
gen_regexps +18.6% -1.2% -6.3% -6.0% +0.0%
integrate -0.1% +39.0% +114.3% +104.9% +3.9%
kahan +1.7% +41.9% +7.5% +7.5% +0.0%
paraffins +1.3% -1.2% -3.3% -2.7% +0.3%
primes +1.4% +57.9% +0.8% +1.0% +0.0%
queens +0.8% -0.2% -1.7% -2.0% +0.0%
rfib +1.7% +42.8% +6.3% +6.0% +0.0%
tak +0.9% +12.0% -2.4% -2.5% +0.0%
wheel-sieve1 +1.4% +99.2% -3.4% -3.4% +58.8%
wheel-sieve2 +1.4% -0.1% -3.6% -3.8% +0.0%
x2n1 +10.3% +43.1% 0.13 0.13 +1300.0%
--------------------------------------------------------------------------------
Min -0.1% -1.2% -6.3% -6.0% +0.0%
Max +18.6% +99.2% +114.3% +104.9% +1300.0%
Geometric Mean +3.3% +27.4% +8.2% +7.8% +34.3%
Allocations
-------------------------------------------------------------------------------
Program log-slow-7.0.4 log-slow-7.6.2
-------------------------------------------------------------------------------
bernouilli 303890616 +0.2%
exp3_8 3500234960 +68.2%
gen_regexps 780759064 -1.2%
integrate 1092338624 +39.0%
kahan 2797648296 +41.9%
paraffins 363166288 -1.2%
primes 861820872 +57.9%
queens 569243336 -0.2%
rfib 81488 +42.8%
tak 94408 +12.0%
wheel-sieve1 24134568 +99.2%
wheel-sieve2 160800936 -0.1%
x2n1 19375720 +43.1%
-1 s.d. ----- +1.2%
+1 s.d. ----- +60.4%
Average ----- +27.4%
Run Time
-------------------------------------------------------------------------------
Program log-slow-7.0.4 log-slow-7.6.2
-------------------------------------------------------------------------------
bernouilli 0.28 +6.7%
exp3_8 3.39 +20.2%
gen_regexps 1.90 -6.3%
integrate 0.68 +114.3%
kahan 4.35 +7.5%
paraffins 1.93 -3.3%
primes 1.51 +0.8%
queens 0.72 -1.7%
rfib 0.31 +6.3%
tak 1.58 -2.4%
wheel-sieve1 2.28 -3.4%
wheel-sieve2 0.77 -3.6%
x2n1 0.04 0.13
-1 s.d. ----- -12.9%
+1 s.d. ----- +34.3%
Average ----- +8.2%
On Tue, Feb 12, 2013 at 3:17 AM, Johan Tibell
Hi Nicolas!
I tried to reproduce the difference between 7.0.4 and 7.6.2 on the exp3_8, wheel-sieve1, and primes and couldn't get the same percent difference as you. We need to reconcile these differences somehow. Lets start with more exact machine specs. I have a:
$ cat /proc/cpuinfo processor : 7 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz stepping : 9 microcode : 0x12 cpu MHz : 1600.000 cache size : 8192 KB ...
$ uname -a Linux johantibell.com 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
And GHC versions:
$ ghc-7.0.4 --info [("Project name","The Glorious Glasgow Haskell Compilation System") ,("Project version","7.0.4") ,("Booter version","6.12.1") ,("Stage","2") ,("Build platform","x86_64-unknown-linux") ,("Host platform","x86_64-unknown-linux") ,("Target platform","x86_64-unknown-linux") ,("Have interpreter","YES") ,("Object splitting","YES") ,("Have native code generator","YES") ,("Have llvm code generator","YES") ,("Support SMP","YES") ,("Unregisterised","NO") ,("Tables next to code","YES") ,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn thr_debug_dyn") ,("Leading underscore","NO") ,("Debug on","False") ,("LibDir","/usr/local/lib/ghc-7.0.4") ,("Global Package DB","/usr/local/lib/ghc-7.0.4/package.conf.d") ,("C compiler flags","[\"-fno-stack-protector\"]") ,("Gcc Linker flags","[]") ,("Ld Linker flags","[]") ]
$ ghc-7.6.2 --info [("Project name","The Glorious Glasgow Haskell Compilation System") ,("GCC extra via C opts"," -fwrapv") ,("C compiler command","/usr/bin/gcc") ,("C compiler flags"," -fno-stack-protector ") ,("ar command","/usr/bin/ar") ,("ar flags","q") ,("ar supports at file","@ArSupportsAtFile@") ,("touch command","touch") ,("dllwrap command","/bin/false") ,("windres command","/bin/false") ,("perl command","/usr/bin/perl") ,("target os","OSLinux") ,("target arch","ArchX86_64") ,("target word size","8") ,("target has GNU nonexec stack","True") ,("target has .ident directive","True") ,("target has subsections via symbols","False") ,("LLVM llc command","llc") ,("LLVM opt command","opt") ,("Project version","7.6.2") ,("Booter version","7.4.1") ,("Stage","2") ,("Build platform","x86_64-unknown-linux") ,("Host platform","x86_64-unknown-linux") ,("Target platform","x86_64-unknown-linux") ,("Have interpreter","YES") ,("Object splitting supported","YES") ,("Have native code generator","YES") ,("Support SMP","YES") ,("Unregisterised","NO") ,("Tables next to code","YES") ,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn thr_debug_dyn") ,("Leading underscore","NO") ,("Debug on","False") ,("LibDir","/usr/local/lib/ghc-7.6.2") ,("Global Package DB","/usr/local/lib/ghc-7.6.2/package.conf.d") ,("Gcc Linker flags","[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\"]") ,("Ld Linker flags","[\"--hash-size=31\",\"--reduce-memory-overheads\"]") ]
I ran the benchmarks by running e.g.:
$ cd nofib/imaginary/sieve-wheel1 $ make clean && make boot WithNofibHc=ghc-${VERSION} && make WithNofibHc=ghc-${VERSION}
Could you please try to run the "imaginary" benchmarks using exactly these commands and report the difference you see between 7.0.4 and 7.6.2. Here's what I see. 7.0.4 vs 7.6.2:
-------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem
-------------------------------------------------------------------------------- bernouilli +3.3% +0.2% 0.12 0.13 +0.0% exp3_8 +1.1% +53.7% 0.14 0.14 +300.0% gen_regexps +18.7% +3.9% 0.00 0.00 +0.0% integrate -0.1% +39.0% 0.21 0.23 +0.0% kahan +1.7% +98.6% +9.9% +7.3% +0.0% paraffins +1.3% -1.2% 0.06 0.08 +0.0% primes +1.4% +64.7% 0.04 0.05 +50.0% queens +0.8% -0.5% 0.02 0.02 +0.0% rfib +1.7% +42.8% 0.02 0.02 +0.0% tak +0.9% +12.0% 0.01 0.01 +0.0% wheel-sieve1 +0.8% +66.6% -4.6% -5.8% -12.5% wheel-sieve2 +0.9% +0.0% 0.12 0.13 +0.0% x2n1 +10.3% +87.3% 0.00 0.01 +200.0%
-------------------------------------------------------------------------------- Min -0.1% -1.2% -4.6% -5.8% -12.5% Max +18.7% +98.6% +9.9% +7.3% +300.0% Geometric Mean +3.2% +31.7% +2.4% +0.5% +23.6%
-- Johan

On 12/02/13 03:17, Johan Tibell wrote:
Hi Nicolas!
I tried to reproduce the difference between 7.0.4 and 7.6.2 on the exp3_8, wheel-sieve1, and primes and couldn't get the same percent difference as you. We need to reconcile these differences somehow. Lets start with more exact machine specs. I have a:
-------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- bernouilli +3.3% +0.2% 0.12 0.13 +0.0% exp3_8 +1.1% +53.7% 0.14 0.14 +300.0% gen_regexps +18.7% +3.9% 0.00 0.00 +0.0% integrate -0.1% +39.0% 0.21 0.23 +0.0% kahan +1.7% +98.6% +9.9% +7.3% +0.0% paraffins +1.3% -1.2% 0.06 0.08 +0.0% primes +1.4% +64.7% 0.04 0.05 +50.0% queens +0.8% -0.5% 0.02 0.02 +0.0% rfib +1.7% +42.8% 0.02 0.02 +0.0% tak +0.9% +12.0% 0.01 0.01 +0.0% wheel-sieve1 +0.8% +66.6% -4.6% -5.8% -12.5% wheel-sieve2 +0.9% +0.0% 0.12 0.13 +0.0% x2n1 +10.3% +87.3% 0.00 0.01 +200.0% -------------------------------------------------------------------------------- Min -0.1% -1.2% -4.6% -5.8% -12.5% Max +18.7% +98.6% +9.9% +7.3% +300.0% Geometric Mean +3.2% +31.7% +2.4% +0.5% +23.6%
Some of these benchmarks essentially do no allocation in their inner loops (x2nl, rfib, tak), so differences there just indicate changes in the IO library or elsewhere, and aren't significant. Is your 7.6.2 from our binary distributions, or did you build it yourself? Cheers, Simon

I'm using the bindists for some versions, and the ~simonmar/fp/ installs
(which I've assumed are bindist) for the ones that already existed there
(ie 7.0.1 to 7.4.1, excepting 7.0.4).
$ md5sum ghc*bz2
0fc26b4c1d10ff9dc8b0cbe9453d48d3 ghc-7.0.4-x86_64-unknown-linux.tar.bz2
de67ecfe619b0126d8a8b93d26f34555 ghc-7.4.2-x86_64-unknown-linux.tar.bz2
23da3285c5f8fe6716e2795d149c6b96 ghc-7.6.1-x86_64-unknown-linux.tar.bz2
230270a985c522af939d9c71aa76343f ghc-7.6.2-x86_64-unknown-linux.tar.bz2
On Tue, Feb 12, 2013 at 11:09 AM, Simon Marlow
On 12/02/13 03:17, Johan Tibell wrote:
Hi Nicolas!
I tried to reproduce the difference between 7.0.4 and 7.6.2 on the exp3_8, wheel-sieve1, and primes and couldn't get the same percent difference as you. We need to reconcile these differences somehow. Lets start with more exact machine specs. I have a:
------------------------------**------------------------------** -------------------- Program Size Allocs Runtime Elapsed TotalMem ------------------------------**------------------------------** -------------------- bernouilli +3.3% +0.2% 0.12 0.13 +0.0% exp3_8 +1.1% +53.7% 0.14 0.14 +300.0% gen_regexps +18.7% +3.9% 0.00 0.00 +0.0% integrate -0.1% +39.0% 0.21 0.23 +0.0% kahan +1.7% +98.6% +9.9% +7.3% +0.0% paraffins +1.3% -1.2% 0.06 0.08 +0.0% primes +1.4% +64.7% 0.04 0.05 +50.0% queens +0.8% -0.5% 0.02 0.02 +0.0% rfib +1.7% +42.8% 0.02 0.02 +0.0% tak +0.9% +12.0% 0.01 0.01 +0.0% wheel-sieve1 +0.8% +66.6% -4.6% -5.8% -12.5% wheel-sieve2 +0.9% +0.0% 0.12 0.13 +0.0% x2n1 +10.3% +87.3% 0.00 0.01 +200.0% ------------------------------**------------------------------** -------------------- Min -0.1% -1.2% -4.6% -5.8% -12.5% Max +18.7% +98.6% +9.9% +7.3% +300.0% Geometric Mean +3.2% +31.7% +2.4% +0.5% +23.6%
Some of these benchmarks essentially do no allocation in their inner loops (x2nl, rfib, tak), so differences there just indicate changes in the IO library or elsewhere, and aren't significant.
Is your 7.6.2 from our binary distributions, or did you build it yourself?
Cheers, Simon
participants (4)
-
Bryan O'Sullivan
-
Johan Tibell
-
Nicolas Frisby
-
Simon Marlow