-
Notifications
You must be signed in to change notification settings - Fork 304
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
fix(bb): eliminate recursion in accumulate* #8205
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @fcarreiro and the rest of your teammates on Graphite |
d0f3107
to
3b11930
Compare
As discussed, a helper for this constant range loop would help readability |
auto seq = std::make_index_sequence<NUM_RELATIONS>{}; | ||
// This evaluates the function across the relations, without recursion. | ||
[&]<size_t... I>(std::index_sequence<I...>) { | ||
// FIXME: You wan't /*consider_skipping=*/false here, but tests need to be fixed. |
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.
Not sure I get this, and why not fix the test if so?
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.
I don't have the time, like 20 verification tests fail. Cody said Luke will look at it.
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.
Yeah it wasn't immediately obvious to me what the issue is so I thought Luke should have a look.
3b11930
to
0adca16
Compare
Merge activity
|
Jean is working on the AVM recursive verifier and he found that these functions were executed recursively (the compiler was indeed generating recursive calls) and causing a stack overflow. This fixes that.
Also fixedTests fail with the fix, I've added a comment.accumulate_relation_evaluations_without_skipping
which was only not skipping the first relation.const&
. IIUC they were being copied before which can be massive for the typeAllValues
. Not sure about that but you might want to check the callers, etc.