Re: GHC build time graphs

2016-02-12 Thread Karel Gardas

On 02/12/16 09:02 PM, Reid Barton wrote:

btw, just recent experience on ARM64 (X-gene board):

bootstrapping 7.10.1 with 7.6.x took: ~120 minutes
bootstrapping 8.0.1 RC2 with 7.10.1 took: ~446 minutes

both run as: ./configure; time make -j8


It would be interesting to have the time for bootstrapping 7.10.1 with
7.10.1 too, for comparison.


Good idea, build is running, but is sluggish just from the first sight. 
Running already for 1h20m and still building stage1. This is more in 
line with 8.0.1 I'm afraid. Anyway, I'll update with proper time once it 
is at the end.


Looks like I'll also need to do 7.8.x build to see where we are on this...

Karel


___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: quick performance measurements

2016-02-12 Thread Joachim Breitner
Hi,

Am Freitag, den 12.02.2016, 14:04 -0500 schrieb Richard Eisenberg:
> Ideally, there would be a way to run a portion of the testsuite and
> have the testsuite tool aggregate performance characteristics and
> report.

if you run the test suite with
$ VERBOSE=4 
you get the detailed stats for every perf test, not only for the
failing ones. This is what the gipeda runner does.

You’d still have to manually compare them, though; no aggregation
happening.

Also, the compiler perf test cases usually check one specific extreme
code path, so they are not a good measure of real world performance.
nofib is better there, and has comparing integrated, but only checks
those parts of the compiler that deal with idiomatic Haskell code from
10 or 20 years back.

Maybe I should write a text that explains how to run gipeda locally on
a bunch of commits on a local branch... but it’s only making the
results more shiny, not more significant, than running nofib or the
test suite manually.

Greetings,
Joachim

-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • https://www.joachim-breitner.de/
  XMPP: nome...@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org



signature.asc
Description: This is a digitally signed message part
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: quick performance measurements

2016-02-12 Thread Ben Gamari
Richard Eisenberg  writes:

> Hi devs,
>
> I have a few ideas for tweaks to improve compiler performance. (For
> example, reversing the order of comparisons in a short-circuiting
> comparison operation.) I don't have a particular test case with a
> profile that tells me where the smoking gun is. But I'd like to try
> these easy tweaks just to see if performance improves.
>
> My question: Is there an easy way to run some command that will give
> me helpful feedback on my performance tweak?
>
> Of course, I could push to a branch and have perf.haskell.org tell me.
> But that takes a long time. I could compile a few files and examine
> the output manually. But that's a bit painful. Ideally, there would be
> a way to run a portion of the testsuite and have the testsuite tool
> aggregate performance characteristics and report. Or perhaps there's a
> way to get cabal to aggregate performance characteristics, and I could
> just try compiling a few libraries. Any ideas out there?
>
Indeed I wish we had better infrastructure for this.

There is nofib, which IIRC tracks compile-time performance although the
coverage isn't terribly great. Otherwise, beyond tweaking the testsuite
driver as thomie suggests the options are sadly fairly limited.

Cheers,

- Ben


signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: quick performance measurements

2016-02-12 Thread Thomas Miedema
You could tweak the function `checkStats` in `testsuite/driver/testlib.py`
a bit, to not only report failures.

Maybe also disable the following check, if you're doing this from a debug
build:

# Compiler performance numbers change when debugging is on, making the
results
# useless and confusing. Therefore, skip if debugging is on.
if compiler_debugged():
skip(name, opts)


On Fri, Feb 12, 2016 at 9:30 PM, Richard Eisenberg 
wrote:

>
> On Feb 12, 2016, at 3:28 PM, Simon Peyton Jones 
> wrote:
>
> > cd testsuite/tests/perf; make
>
> But that tells me only about failures. What if I have a tweak that makes
> an average 1% improvement over lots of files? That would be a nice
> improvement, but we don't have an easy way to collect this info, I think,
> other than perf.haskell.org.
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: quick performance measurements

2016-02-12 Thread Richard Eisenberg

On Feb 12, 2016, at 3:28 PM, Simon Peyton Jones  wrote:

> cd testsuite/tests/perf; make

But that tells me only about failures. What if I have a tweak that makes an 
average 1% improvement over lots of files? That would be a nice improvement, 
but we don't have an easy way to collect this info, I think, other than 
perf.haskell.org.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


RE: quick performance measurements

2016-02-12 Thread Simon Peyton Jones
cd testsuite/tests/perf; make

| -Original Message-
| From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of Richard
| Eisenberg
| Sent: 12 February 2016 19:04
| To: ghc-devs@haskell.org developers 
| Subject: quick performance measurements
| 
| Hi devs,
| 
| I have a few ideas for tweaks to improve compiler performance. (For example,
| reversing the order of comparisons in a short-circuiting comparison
| operation.) I don't have a particular test case with a profile that tells me
| where the smoking gun is. But I'd like to try these easy tweaks just to see
| if performance improves.
| 
| My question:
| Is there an easy way to run some command that will give me helpful feedback
| on my performance tweak?
| 
| Of course, I could push to a branch and have
| https://na01.safelinks.protection.outlook.com/?url=perf.haskell.org&data=01%7
| c01%7csimonpj%40064d.mgd.microsoft.com%7cb2e1edc8a6f248a9066508d333df5623%7c7
| 2f988bf86f141af91ab2d7cd011db47%7c1&sdata=wU6DNmX%2bLF8sagU0B9yJAh4MKJ3yJc1CA
| omIiSI%2fqvM%3d tell me. But that takes a long time. I could compile a few
| files and examine the output manually. But that's a bit painful. Ideally,
| there would be a way to run a portion of the testsuite and have the testsuite
| tool aggregate performance characteristics and report. Or perhaps there's a
| way to get cabal to aggregate performance characteristics, and I could just
| try compiling a few libraries. Any ideas out there?
| 
| Thanks!
| Richard
| ___
| ghc-devs mailing list
| ghc-devs@haskell.org
| https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.haskell.
| org%2fcgi-bin%2fmailman%2flistinfo%2fghc-
| devs&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb2e1edc8a6f248a9066508
| d333df5623%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=JnjGw%2fk%2brdNGy9VNY
| 0m1KA7Ojr2ubJO6PneeGVL4LmY%3d
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: GHC build time graphs

2016-02-12 Thread Reid Barton
On Tue, Feb 9, 2016 at 11:20 AM, Karel Gardas 
wrote:

> On 01/28/16 11:34 PM, Ben Gamari wrote:
>
>> Joachim Breitner  writes:
>>
>> Hi Oleg,
>>>
>>> Am Freitag, den 29.01.2016, 00:22 +0200 schrieb Oleg Grenrus:
>>>
 Is the same compiler used to build HEAD and 7.10,1?

>>>
>>> Good call. In fact, no: 7.10.1 is built with 7.6.3, while HEAD is built
>>> with 7.10.3.
>>>
>>> Anthony’s link, i.e.
>>>
>>> https://perf.haskell.org/ghc/#compare/ca00def1d7093d6b5b2a937ddfc8a01c152038eb/a496f82d5684f3025a60877600e82f0b29736e85
>>> has links to the build logs of either build; there I could find that
>>> information.
>>>
>>> That might be (part) of the problem. But if it is, it is even worse, as
>>> it would mean not only building the compiler got slower, but the
>>> compiler itself...
>>>
>>> I can verify that the build itself is indeed slower. Validating the
>> current state of ghc-7.10 takes 19 minutes, whereas ghc-8.0 takes 25.5
>> minutes. This isn't entirely unexpected but the change is quite a bit
>> larger than I had thought. It would be nice to know which commits are
>> responsible.
>>
>
> btw, just recent experience on ARM64 (X-gene board):
>
> bootstrapping 7.10.1 with 7.6.x took: ~120 minutes
> bootstrapping 8.0.1 RC2 with 7.10.1 took: ~446 minutes
>
> both run as: ./configure; time make -j8
>

It would be interesting to have the time for bootstrapping 7.10.1 with
7.10.1 too, for comparison.

Regards,
Reid Barton
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


quick performance measurements

2016-02-12 Thread Richard Eisenberg
Hi devs,

I have a few ideas for tweaks to improve compiler performance. (For example, 
reversing the order of comparisons in a short-circuiting comparison operation.) 
I don't have a particular test case with a profile that tells me where the 
smoking gun is. But I'd like to try these easy tweaks just to see if 
performance improves.

My question:
Is there an easy way to run some command that will give me helpful feedback on 
my performance tweak?

Of course, I could push to a branch and have perf.haskell.org tell me. But that 
takes a long time. I could compile a few files and examine the output manually. 
But that's a bit painful. Ideally, there would be a way to run a portion of the 
testsuite and have the testsuite tool aggregate performance characteristics and 
report. Or perhaps there's a way to get cabal to aggregate performance 
characteristics, and I could just try compiling a few libraries. Any ideas out 
there?

Thanks!
Richard
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: GHC performance dashboard question

2016-02-12 Thread Joachim Breitner
Hi Janek,

Am Freitag, den 12.02.2016, 08:36 +0100 schrieb Jan Stolarek:
> Joachim, what do I need to do to have my wip/ branch picked up by the
> performance dashboard? I'm 
> thinking about branch wip/js-hoopl-cleanup, which was pushed
> yesterday but still hasn't been 
> measured for performance.

wip/ branches have lower precedence than the master branch, so in busy
times, it just takes a while. But by now, the branch has been measured.
But no noticable change:
https://perf.haskell.org/ghc/#compare/c6485d5e6daec20c8ff66d6e721d3e0a5f3156ac/a1931b9f28b1b44cc67b1666719db5ff46ee19ef

Greetings,
Joachim
-- 
-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • https://www.joachim-breitner.de/
  XMPP: nome...@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org



signature.asc
Description: This is a digitally signed message part
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Validation failures

2016-02-12 Thread Ben Gamari
Ben Gamari  writes:

> Simon Peyton Jones  writes:
>
>> I’m getting this on a clean HEAD.  Is anyone else?
>> Simon
>>
>> Unexpected stat failures:
>>perf/compiler  T5030 [stat not good enough] (normal)
>>perf/compiler  T9872b [stat not good enough] (normal)
>>perf/compiler  T9872c [stat not good enough] (normal)
>
> I suspect this may have been due to niteria's piResult patch. I noticed
> similar failures when attempting to merge his patch and meant to return
> to the matter but forgot leave a comment on the Diff.
>
In fact niteria reverted the patch in question so hopefully it these
should now be gone.

Cheers,

- Ben



signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Validation failures

2016-02-12 Thread Ben Gamari
Simon Peyton Jones  writes:

> I’m getting this on a clean HEAD.  Is anyone else?
> Simon
>
> Unexpected stat failures:
>perf/compiler  T5030 [stat not good enough] (normal)
>perf/compiler  T9872b [stat not good enough] (normal)
>perf/compiler  T9872c [stat not good enough] (normal)

I suspect this may have been due to niteria's piResult patch. I noticed
similar failures when attempting to merge his patch and meant to return
to the matter but forgot leave a comment on the Diff.

Cheers,

- Ben


signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Validation failures

2016-02-12 Thread Simon Peyton Jones
I’m getting this on a clean HEAD.  Is anyone else?
Simon

Unexpected stat failures:
   perf/compiler  T5030 [stat not good enough] (normal)
   perf/compiler  T9872b [stat not good enough] (normal)
   perf/compiler  T9872c [stat not good enough] (normal)
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


[Template Haskell] Desugaring TH brackets vs. Desugaring normal HsExprS.

2016-02-12 Thread Dominik Bollmann

Hi,

I'm currently trying to understand GHC's implementation of Template
Haskell and I've had the following two questions when reading upon
deSugar/DsMeta.hs and deSugar/dsExpr.hs (disclaimer: I'm a complete
newbie to GHC and do not know pretty much anything about its internals;
so please excuse silly questions).

1) As far as I understand DsMeta, its purpose is to desugar the contents
of TH quotation brackets, e.g. [| \x -> x |]. Given the HsExpr contents,
say `expr`, of a quotation bracket, it creates a CoreExpr
/representation/ of `expr` such that /evaluating/ this CoreExpr
representation yields a TH expression equivalent to `expr`. (This is
similar to how quotations are implemented in the original TH paper).

On the other hand, when instead writing the above TH quote, (i.e., [| \x
-> x |]), explicitly as

  newName "x" >>= (\x -> lamE (varP x) (varE x))   (*)

there is no need to build a CoreExpr /representation/ because we already
got the TH value we're interested in; Hence, in this case DsExpr
desugars the above (*) directly to a CoreExpr that represents it.

Is my understanding of the above correct? I tried to confirm it using
the following to splices:

test1 :: Q Exp
test1 = [| \x -> x |]

test2 :: Q Exp
test2 = do
  x <- newName "x"
  lamE [(varP x)] (varE x)

However, dumping the desugared output of these splices using `-ddump-ds`
gives the exact same CoreExprS:

test1 :: Q Exp
[LclIdX, Str=DmdType]
test1 =
  Language.Haskell.TH.Syntax.bindQ
@ Name
@ Exp
(newName (GHC.CString.unpackCString# "x"#))
(\ (x_a399 :: Name) ->
   lamE
 (GHC.Types.: @ PatQ (varP x_a399) (GHC.Types.[] @ PatQ))
 (varE x_a399))

test2 :: Q Exp
[LclIdX, Str=DmdType]
test2 =
  >>=
@ Q
Language.Haskell.TH.Syntax.$fMonadQ
@ Name
@ Exp
(newName (GHC.CString.unpackCString# "x"#))
(\ (x_a39a :: Name) ->
   lamE
 (GHC.Types.: @ PatQ (varP x_a39a) (GHC.Types.[] @ PatQ))
 (varE x_a39a))

Could anyone explain to me why both CoreExpr dumps are the same?
Shouldn't the first be a /representation/ that, only when run, yields
the second CoreExpr?

If anyone could help me understanding this, it'd be great!

Thanks, Dominik.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs