-
Notifications
You must be signed in to change notification settings - Fork 40
optimize extrapolation with zero field inverse during runtime #956
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
optimize extrapolation with zero field inverse during runtime #956
Conversation
653bac9 to
7b075ec
Compare
7b075ec to
80fc89f
Compare
80fc89f to
6e1ab56
Compare
6e1ab56 to
c0d01d3
Compare
| ))] | ||
| pub struct IOPProof<E: ExtensionField> { | ||
| pub point: Vec<E>, | ||
| pub point: Point<E>, |
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 just found Point<E> shouldn't be included in IOPProof<E>. What do you think about 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.
yes I agree with you we should remove it and I will submit another PR to do that since in involved more change outside of this scope
spherel
left a comment
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.
LGTM!
build on top of #956 to address review comments clean up point from sumcheck proof, as verifier should derived itself
…-tech#956) Extracted from scroll-tech#952. Observe a bottleneck on previous interpolation which contribute to most of time due to `vector.extend` operation and bunch of allocations. This PR rewrite univariate extrapolation 1. as the point to be interpolate are fixed set, we can pre-compute all stuff require field inverse 2. in-place change to avoid allocation In Ceno opcode main sumcheck part we batch different degree > 1 into one batch so this function will be used. It shows a slightly improvement (~3%) on Fibonacci 2^24 e2e | Benchmark | Median Time (s) | Median Change (%) | |----------------------------------|------------------|--------------------| | fibonacci_max_steps_1048576 | 2.3978 | +0.9805% (No significant change ) | | fibonacci_max_steps_2097152 | 4.2579 | +1.7587% (Change within noise) | | fibonacci_max_steps_4194304 | 7.7561 | -3.5338% |
Extracted from #952.
Observe a bottleneck on previous interpolation which contribute to most of time due to
vector.extendoperation and bunch of allocations.This PR rewrite univariate extrapolation
benchmark
In Ceno opcode main sumcheck part we batch different degree > 1 into one batch so this function will be used.
It shows a slightly improvement (~3%) on Fibonacci 2^24 e2e