[GHC] #7850: Strangely high memory usage on optimized Ackermann function
GHC
cvs-ghc at haskell.org
Sat Apr 20 21:39:18 CEST 2013
#7850: Strangely high memory usage on optimized Ackermann function
------------------------------------+---------------------------------------
Reporter: dolio | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.6.2 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: Runtime performance bug | Blockedby:
Blocking: | Related:
------------------------------------+---------------------------------------
Comment(by dolio):
The benchmarks game used to have an entry called 'recursive' that ran fib,
ack and tak.* But it's since disappeared, and isn't one of the entries
that was copied into nofib.
ack is the only one that displays the pathological behavior by default. I
thought tak might, but it didn't. This seems to be related to a shallower
stack usage. For instance, tak 60000 30 15 runs comfortably (for a very
long time) with -K32K, so it will never overflow the default chunk size.
However, one can get tak to eat memory in a similar way by making the
stack chunking small enough. For (an extreme) instance -kb25 -kc256,
setting the chunk size to 256 bytes, will cause the same memory exhausting
behavior.
This meshes with nomeata's observations above.
Also for reference, I just built 7.6.3, and whatever fixed this in HEAD
has not been incorporated into it. It still displays the pathological
behavior.
----
[*] tak is defined as follows:
{{{
tak x y z
| y < x = tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y)
| otherwise = z
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7850#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list