[GHC] #10491: Simplifier explosion with Accelerate

GHC ghc-devs at haskell.org
Thu Jun 11 00:11:02 UTC 2015


#10491: Simplifier explosion with Accelerate
-------------------------------------+-------------------------------------
        Reporter:  robertce          |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:  7.10.2
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------
Description changed by robertce:

Old description:

> In [https://github.com/AccelerateHS/accelerate Accelerate] we are
> encountering problems with the simplifier exploding the number of terms,
> which consequently cause huge compile times. This has only happened since
> the release of 7.10.1 and it appears to still be happening in the
> ghc-7.10 branch.
>
> In the attached Slice.hs you can see what is about the worst case
> example. Trying to compile this with `-O2` yields
>
> {{{
> [1 of 1] Compiling Data.Array.Accelerate.CUDA.Array.Slice ( Slice.hs,
> Slice.o )
> ghc: panic! (the 'impossible' happened)
>   (GHC version 7.10.1.20150602 for x86_64-apple-darwin):
>         Simplifier ticks exhausted
>   When trying UnfoldingDone $j_s1FRp
>   To increase the limit, use -fsimpl-tick-factor=N (default 100)
>   If you need to do this, let GHC HQ know, and what factor you needed
>   To see detailed counts use -ddump-simpl-stats
>   Total ticks: 1668604
> }}}
>
> Bumping the tick factor to 150 stops this from happening, but at that
> point the simplifier blows up. See output.txt for the output of `ghc -v`.
> After half an hour we end up with ~4 million terms. At this point ghc
> takes up about 9GB of memory and I have to kill it.
>
> In order to reproduce this, you will need the `accelerate` package and
> all its various dependencies. It doesn't have to be the latest from
> github. The version on hackage also works with the example I have given.
> I will try to come up with a test case that is not so heavy on
> dependencies, but I wanted to ensure this was raised before 7.10.2 is
> released.

New description:

 In [https://github.com/AccelerateHS/accelerate Accelerate] we are
 encountering problems with the simplifier exploding the number of terms,
 which consequently cause huge compile times. This has only happened since
 the release of 7.10.1 and it appears to still be happening in the ghc-7.10
 branch.

 In the attached Slice.hs you can see what is about the worst case example.
 Trying to compile this with `-O2` yields

 {{{
 [1 of 1] Compiling Data.Array.Accelerate.CUDA.Array.Slice ( Slice.hs,
 Slice.o )
 ghc: panic! (the 'impossible' happened)
   (GHC version 7.10.1.20150602 for x86_64-apple-darwin):
         Simplifier ticks exhausted
   When trying UnfoldingDone $j_s1FRp
   To increase the limit, use -fsimpl-tick-factor=N (default 100)
   If you need to do this, let GHC HQ know, and what factor you needed
   To see detailed counts use -ddump-simpl-stats
   Total ticks: 1668604
 }}}

 Bumping the tick factor to 150 stops this from happening, but at that
 point the simplifier blows up. See output.txt for the output of `ghc -v`.
 After half an hour we end up with ~4 million terms. At this point ghc
 takes up about 9GB of memory and I have to kill it.

 In order to reproduce this, you will need the `accelerate` package and all
 its various dependencies. It doesn't have to be the latest from github.
 The version on hackage also works with the example I have given. I will
 try to come up with a test case that is not so heavy on dependencies, but
 I wanted to ensure this was raised before 7.10.2 is released.

 Steps to reproduce:
 {{{
 cabal install accelerate
 ghc -O2 -fsimpl-tick-factor=150 Slice.hs
 }}}

--

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


More information about the ghc-tickets mailing list