Skip to content

Conversation

@sim642
Copy link
Member

@sim642 sim642 commented Oct 5, 2021

Closes #368.

This PR is built on top of #370. It makes TD3 implement its own top-down postsolving, which additionally knows about all the TD3-specific incremental data structures to know what definitely doesn't need to be re-evaluated.

For verify, it uses a superstable set, consisting of loaded stable and every removal from stable permanently removes the node from superstable. Nothing ever gets added back there. After solving superstable contains all the variables that were continuously stable, hence definitely unchanged. These are considered the initially reachable set, which stops the top-down verify naturally.

Incremental warnings are a pain though: the correct constraint system Var module for hashtable usage is just available inside the solver itself. So TD3 hooks into the right-hand sides and the message system to know which warnings come from where.
Incrementally, the warnings at superstable nodes still apply, the rest gets filled in by postsolving again and recorded in var_messages for incremental re-save.

This is quite hacky, but the best we can do without putting warnings into the domain (which would have numerous bigger issues on its own).
Also this breaks race detection warnings because Access module uses its own global hashtables that are correctly filled in only when the entire program is re-verified. Incremental verification therefore gives incomplete race warnings and without major redesign of race warnings, it's not possible to get them incrementally.

@sim642 sim642 added feature performance Analysis time, memory usage labels Oct 5, 2021
Base automatically changed from postsolver to master October 12, 2021 12:39
@sim642 sim642 changed the base branch from master to interactive October 12, 2021 13:52
This allows disabling incremental verify and doing full verify during incremental load.
It is useful for getting race warnings.
@sim642
Copy link
Member Author

sim642 commented Oct 13, 2021

Merging into the branch interactive for better experimentation.

@sim642 sim642 merged commit 90cadee into interactive Oct 13, 2021
@sim642 sim642 deleted the td3-incr-warn branch October 13, 2021 07:52
This was referenced Oct 13, 2021
@sim642 sim642 added the hacktoberfest-accepted https://hacktoberfest.digitalocean.com/ label Oct 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature hacktoberfest-accepted https://hacktoberfest.digitalocean.com/ performance Analysis time, memory usage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants