-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
271 recursive simplification of constraints during evaluation #455
Conversation
Other tweaks are: * replace all `EquationT . lift . lift` by a dedicated function `eqState` * rename `RecursionLimitExceeded` to `TooManyRecursions`
…ive-simplification
…ication-reprise Conflicts: library/Booster/Pattern/ApplyEquations.hs scripts/integration-tests.sh test/rpc-integration/runDirectoryTest.sh
…-simplification-reprise
KEVM timings vs latest master: a few improvements
|
Kontrol performance (5 workers): some improvements and some really weird looking regressions, perhaps due to noise? rerunning with 1 worker.
|
I've reran the Kontrol suite with 1 worker and the regression is not there anymore:
|
, cache | ||
} | ||
|
||
eqState :: MonadLoggerIO io => StateT EquationState io a -> EquationT io a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice!
Do we have any examples where this allows execution to continue where it couldn't before? If we don't see significant performance improvements, then we should at least check that we are indeed falling back less. Can we post fallback statistics here? The worry I have is that recursive constraint simplification has always caused problems in the past and been tricky to implement, usually with creating potentially infinite looping code. Do we have any protections against infinite looping? Is the depth-limit of 5 mentioned above doing that? Is that user-configurable? |
The code change enables jump condition simplifications when combined with the
The limit of 5 is currently not configurable but we can add an option to adjust that limit. There is one test with two mutually-recursive simplifications, which indeed loops forever in the legacy backend but is caught by the new code. |
Kontrol performance with 3 workers
|
Fixes #271