Skip to content

Do stack squeezing before expanding stack

The presenting effect is that nofib/spectral/hartel/genfft exhibits non-deterministic allocation behaviour:

./fft-noticky 7 +RTS -sstderr 
13735234/185243
     112,177,208 bytes allocated in the heap
      61,405,448 bytes copied during GC
      15,156,968 bytes maximum residency (8 sample(s))
      13,590,616 bytes maximum slop
              40 MB total memory in use (8 MB lost due to fragmentation)

  Generation 0:   151 collections,     0 parallel,  0.10s,  0.10s elapsed
  Generation 1:     8 collections,     0 parallel,  0.06s,  0.06s elapsed

  INIT  time    0.00s  (  0.00s elapsed)
  MUT   time    0.08s  (  0.08s elapsed)
  GC    time    0.16s  (  0.16s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time    0.25s  (  0.25s elapsed)

  %GC time      66.3%  (66.8% elapsed)

  Alloc rate    1,343,359,176 bytes per MUT second

  Productivity  32.9% of total user, 33.1% of total elapsed

-----------------------------
./fft-noticky 7 +RTS -sstderr 
13735234/185243
     114,257,976 bytes allocated in the heap
      61,405,448 bytes copied during GC
      15,156,968 bytes maximum residency (8 sample(s))
      14,622,696 bytes maximum slop
              40 MB total memory in use (6 MB lost due to fragmentation)

  Generation 0:   151 collections,     0 parallel,  0.11s,  0.11s elapsed
  Generation 1:     8 collections,     0 parallel,  0.06s,  0.06s elapsed

  INIT  time    0.00s  (  0.00s elapsed)
  MUT   time    0.08s  (  0.08s elapsed)
  GC    time    0.17s  (  0.17s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time    0.25s  (  0.25s elapsed)

  %GC time      66.4%  (66.8% elapsed)

  Alloc rate    1,354,200,704 bytes per MUT second

  Productivity  32.9% of total user, 33.0% of total elapsed

The non-determinism goes away with the RTS opt -V0.

In discussion we think the allocation differs because stack-squeezing happens differently in the two runs.

Trac metadata
Trac field Value
Version 6.12.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information