Conversation
There was a problem hiding this comment.
Pull request overview
Reduces memory overhead in the TD3 solver by avoiding population of the (potentially large) dep dependency table when it isn’t needed for incremental functionality.
Changes:
- Introduces a
collect_depflag to control whetherdepis populated. - Guards
depupdates inadd_inflanddepresets on RHS re-evaluation behindcollect_dep.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
On sv-benchmarks with level01, 60s and 1GB, it doesn't make a difference in time, but it does lower peak memory usage by ~5%: I still want to try it on rsync to see what happens for significantly larger programs. |
|
This speeds up rsync analysis by ~6% (on top of #1974): goblint/bench@6e4ada7. |

Closes #1566.
I'm wondering if this makes any difference for large programs like rsync.
The biggest hashtables in TD3 (and probably Goblint overall) are
rho,inflanddepbecause they contain most encountered unknowns. So keeping one empty could make quite a difference.Obviously we should have this anyway, but I'm interested in doing some benchmarking on sv-benchmarks and rsync to find out if this is one of the stupid significant bottlenecks.
TODO