[GHC] #10491: Regression, simplifier explosion with Accelerate, cannot compile, increasing tick factor is not a workaround

GHC ghc-devs at haskell.org
Thu Jun 18 16:31:10 UTC 2015


#10491: Regression, simplifier explosion with Accelerate, cannot compile,
increasing tick factor is not a workaround
-------------------------------------+-------------------------------------
        Reporter:  robertce          |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  highest           |               Milestone:  7.10.2
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by simonpj):

 I've just compiled `Slice.hs` with HEAD quite easily
 {{{
 bash$ ghc-stage2 -dshow-passes Slice.hs -package accelerate -O2 -fforce-
 recomp
 ....
    4,168,610,960 bytes allocated in the heap
      973,775,616 bytes copied during GC
       67,207,400 bytes maximum residency (14 sample(s))
        2,684,880 bytes maximum slop
              185 MB total memory in use (0 MB lost due to fragmentation)

 }}}
 The program never ets vast
 {{{
 [1 of 1] Compiling Data.Array.Accelerate.CUDA.Array.Slice ( Slice.hs,
 Slice.o )
 *** Parser:
 *** Renamer/typechecker:
 *** Desugar:
 Result size of Desugar (after optimization)
   = {terms: 2,214, types: 3,698, coercions: 26}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 2,183, types: 3,841, coercions: 20}
 Result size of Simplifier iteration=2
   = {terms: 2,182, types: 3,835, coercions: 20}
 Result size of Simplifier
   = {terms: 2,182, types: 3,835, coercions: 20}
 *** Specialise:
 Result size of Specialise
   = {terms: 6,196, types: 26,056, coercions: 470}
 *** Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}):
 Result size of Float out(FOS {Lam = Just 0,
                               Consts = True,
                               OverSatApps = False})
   = {terms: 7,738, types: 35,962, coercions: 470}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 9,756, types: 45,944, coercions: 10,471}
 Result size of Simplifier iteration=2
   = {terms: 10,295, types: 49,489, coercions: 21,914}
 Result size of Simplifier iteration=3
   = {terms: 9,724, types: 46,649, coercions: 14,825}
 Result size of Simplifier iteration=4
   = {terms: 9,694, types: 46,444, coercions: 14,376}
 Result size of Simplifier
   = {terms: 9,694, types: 46,444, coercions: 14,376}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 9,301, types: 45,776, coercions: 13,996}
 Result size of Simplifier iteration=2
   = {terms: 9,267, types: 45,696, coercions: 13,846}
 Result size of Simplifier iteration=3
   = {terms: 9,268, types: 45,686, coercions: 13,744}
 Result size of Simplifier iteration=4
   = {terms: 9,268, types: 45,681, coercions: 13,682}
 Result size of Simplifier
   = {terms: 9,268, types: 45,681, coercions: 13,682}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 21,154, types: 76,735, coercions: 30,042}
 Result size of Simplifier iteration=2
   = {terms: 18,674, types: 69,540, coercions: 22,805}
 Result size of Simplifier iteration=3
   = {terms: 18,479, types: 67,598, coercions: 19,578}
 Result size of Simplifier iteration=4
   = {terms: 17,773, types: 64,887, coercions: 16,920}
 Result size of Simplifier
   = {terms: 17,773, types: 64,887, coercions: 16,920}
 *** Float inwards:
 Result size of Float inwards
   = {terms: 17,773, types: 64,887, coercions: 16,920}
 *** Called arity analysis:
 Result size of Called arity analysis
   = {terms: 17,773, types: 64,887, coercions: 16,920}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 17,458, types: 63,723, coercions: 15,764}
 Result size of Simplifier iteration=2
   = {terms: 17,528, types: 63,751, coercions: 15,458}
 Result size of Simplifier iteration=3
   = {terms: 17,560, types: 63,758, coercions: 15,272}
 Result size of Simplifier iteration=4
   = {terms: 17,551, types: 63,748, coercions: 15,182}
 Result size of Simplifier
   = {terms: 17,551, types: 63,748, coercions: 15,182}
 *** Demand analysis:
 Result size of Demand analysis
   = {terms: 17,551, types: 63,748, coercions: 15,182}
 *** Worker Wrapper binds:
 Result size of Worker Wrapper binds
   = {terms: 21,047, types: 77,338, coercions: 15,182}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 19,533, types: 69,686, coercions: 15,210}
 Result size of Simplifier iteration=2
   = {terms: 18,528, types: 67,708, coercions: 15,346}
 Result size of Simplifier iteration=3
   = {terms: 18,293, types: 67,029, coercions: 15,164}
 Result size of Simplifier
   = {terms: 18,293, types: 67,029, coercions: 15,164}
 *** Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = True}):
 Result size of Float out(FOS {Lam = Just 0,
                               Consts = True,
                               OverSatApps = True})
   = {terms: 19,134, types: 72,375, coercions: 15,164}
 *** Common sub-expression:
 Result size of Common sub-expression
   = {terms: 17,353, types: 61,395, coercions: 5,875}
 *** Float inwards:
 Result size of Float inwards
   = {terms: 17,353, types: 61,395, coercions: 5,875}
 *** Liberate case:
 Result size of Liberate case
   = {terms: 17,353, types: 61,395, coercions: 5,875}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 15,872, types: 53,291, coercions: 6,049}
 Result size of Simplifier
   = {terms: 15,745, types: 52,388, coercions: 5,875}
 *** SpecConstr:
 Result size of SpecConstr
   = {terms: 16,083, types: 52,968, coercions: 5,875}
 *** Simplifier:
 Result size of Simplifier iteration=1
   = {terms: 16,074, types: 52,968, coercions: 5,875}
 Result size of Simplifier iteration=2
   = {terms: 16,075, types: 53,003, coercions: 5,875}
 Result size of Simplifier
   = {terms: 16,075, types: 53,003, coercions: 5,875}
 *** Tidy Core:
 Result size of Tidy Core
   = {terms: 10,807, types: 36,367, coercions: 5,684}
 *** CorePrep:
 Result size of CorePrep
   = {terms: 13,102, types: 39,418, coercions: 5,688}
 *** Stg2Stg:
 *** CodeGen:
 *** Assembler:
 }}}
 The

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


More information about the ghc-tickets mailing list