[GHC] #1600: Optimisation: CPR the results of IO

GHC ghc-devs at haskell.org
Mon Feb 20 07:16:41 UTC 2017


#1600: Optimisation: CPR the results of IO
-------------------------------------+-------------------------------------
        Reporter:  simonmar          |                Owner:  (none)
            Type:  task              |               Status:  new
        Priority:  lowest            |            Milestone:
       Component:  Compiler          |              Version:  6.6.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Runtime           |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #8598             |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by akio):

 == mandel and gcd

 The main difference seems to come from [https://github.com/takano-
 akio/ghc/commit/1edc47406dd2f5da9925978b01a1724028bd576e this change],
 which makes `integer-gmp` allocate less by inlining wrappers for `S#`,
 `Jp#` etc. Actually this small change seems to be responsible for the much
 of the allocation improvement in this branch:


 {{{
             gcd          +0.8%    -21.4%     0.039     0.040      0.0%
         integer          +1.1%     -1.5%     +5.0%     +5.1%      0.0%
          mandel          +1.1%    -24.4%     0.070     0.070      0.0%
 --------------------------------------------------------------------------------
             Min          -0.0%    -24.4%    -38.7%    -38.5%      0.0%
             Max          +1.1%      0.0%    +13.7%    +13.6%    +14.4%
  Geometric Mean          +0.3%     -0.6%     -6.9%     -6.9%     +0.1%
 }}}

 Perhaps I should try go get this change merged, separately from the rest
 of the nested CPR work.

 == Binary size increase

 I had a brief look at `nofib/real/fluid/Jcb_method.hs`, which showed a
 +60% increase in the binary size, but I wasn't able to figure out why the
 change happened. !SpecConstr now seems to duplicate a big function, but I
 don't know what caused this (yet).

 == Wiki page

 I think the content under wiki:NestedCPR is mostly valid, because all I
 have done so far is essentially just to rebase nomeata's branch on top of
 the join-point commit.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/1600#comment:64>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list