-
Notifications
You must be signed in to change notification settings - Fork 93
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
Incorporate fft in AVX backend #394
Conversation
7b32243
to
4d4559e
Compare
f4b7ea2
to
01182e8
Compare
4d4559e
to
77d3321
Compare
01182e8
to
6242a6e
Compare
a292ff0
to
caf1bad
Compare
0cebf44
to
1aec621
Compare
caf1bad
to
fb7a548
Compare
de3f95c
to
436ea83
Compare
fb7a548
to
f17ff9b
Compare
f17ff9b
to
500ce14
Compare
436ea83
to
2c277df
Compare
500ce14
to
dae360f
Compare
2c277df
to
52f967c
Compare
dae360f
to
3d8f731
Compare
52f967c
to
58647c1
Compare
3d8f731
to
da83eab
Compare
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.
Reviewed 1 of 1 files at r1, all commit messages.
Reviewable status: all files reviewed, 4 unresolved discussions (waiting on @spapinistarkware)
src/core/backend/avx512/circle.rs
line 30 at r1 (raw file):
AVX512Backend::bit_reverse_column(&mut values); // TODO(spapini): Handle small cases. let log_size = values.length.ilog2();
Move to the beginning of the function
I guess that if this is too small then we can just do trivial interpolation without twiddles or anything
Code quote:
// TODO(spapini): Handle small cases.
let log_size = values.length.ilog2();
src/core/backend/avx512/circle.rs
line 38 at r1 (raw file):
log_size as usize, ); }
Should this be implemented also for AVX512?
Code quote:
unsafe {
ifft::ifft(
std::mem::transmute(values.data.as_mut_ptr()),
&twiddles[1..],
log_size as usize,
);
}
src/core/backend/avx512/circle.rs
line 54 at r1 (raw file):
_point: crate::core::circle::CirclePoint<E>, ) -> E { todo!()
Why did you change it?
Code quote:
fn eval_at_point<E: crate::core::fields::ExtensionOf<BaseField>>(
_poly: &CirclePoly<Self, BaseField>,
_point: crate::core::circle::CirclePoint<E>,
) -> E {
todo!()
src/core/backend/avx512/circle.rs
line 64 at r1 (raw file):
// TODO(spapini): Precompute twiddles. let twiddles = rfft::get_twiddle_dbls(domain);
Why this file is called rfft
? (and not fft
?)
Code quote:
rfft
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.
Reviewable status: all files reviewed, 4 unresolved discussions (waiting on @shaharsamocha7)
src/core/backend/avx512/circle.rs
line 38 at r1 (raw file):
Previously, shaharsamocha7 wrote…
Should this be implemented also for AVX512?
This is the avx512 impl
src/core/backend/avx512/circle.rs
line 54 at r1 (raw file):
Previously, shaharsamocha7 wrote…
Why did you change it?
It does not bring the right results now. Next few PRs fix this.
The orde of the coefficients is different with the new fft impl.
src/core/backend/avx512/circle.rs
line 64 at r1 (raw file):
Previously, shaharsamocha7 wrote…
Why this file is called
rfft
? (and notfft
?)
Because rust doesn;t let me have fft module inside fft module.
da83eab
to
c29f8f0
Compare
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.
Reviewable status: 0 of 1 files reviewed, 4 unresolved discussions (waiting on @shaharsamocha7)
src/core/backend/avx512/circle.rs
line 30 at r1 (raw file):
Previously, shaharsamocha7 wrote…
Move to the beginning of the function
I guess that if this is too small then we can just do trivial interpolation without twiddles or anything
Done.
Yes, I'm adding this in the next few PRs.
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.
Reviewed 1 of 1 files at r2, all commit messages.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @spapinistarkware)
src/core/backend/avx512/circle.rs
line 38 at r1 (raw file):
Previously, spapinistarkware (Shahar Papini) wrote…
This is the avx512 impl
My bad
src/core/backend/avx512/circle.rs
line 64 at r1 (raw file):
Previously, spapinistarkware (Shahar Papini) wrote…
Because rust doesn;t let me have fft module inside fft module.
so what rfft stands for?
maybe we should change the dir name to NTT?
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.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @shaharsamocha7)
src/core/backend/avx512/circle.rs
line 64 at r1 (raw file):
Previously, shaharsamocha7 wrote…
so what rfft stands for?
maybe we should change the dir name to NTT?
regular. it says so at the top of the module.
I can change it in another PR. Let's discuss a good name tomorrow:)
Merge activity
|
<!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/starkware-libs/stwo/394) <!-- Reviewable:end -->
c29f8f0
to
642cc8d
Compare
This change is