-
Notifications
You must be signed in to change notification settings - Fork 11
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
SIMD Conversion Functions #386
Conversation
a9781c0
to
4d03561
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.
Thank you for your contribution!
Overall, it looks good, and the unit tests are well done.
I’ve suggested several changes in the comments regarding the compilation error for clang and conversion warnings.
Please review the comments, once these issues are resolved, the PR can be merged.
bc7dc10
to
14af17d
Compare
Functions implemented: - ComplexToInterleaved - InterleavedToComplex - Abs - Real - Imag - Arg - RadiansToDegree - DegreeToRadians - ToRealImag - RealImagToComplex - ToMagPhase - MagPhaseToComplex Based on the original vectorisiation example by @mattkretz: https://godbolt.org/z/7MT71MbGz Extended example to assess the asm-related efficiency: https://godbolt.org/z/obexWhjMq Some functions have (not yet) a SIMD implementation due to the missing permute API. Signed-off-by: Ralph J. Steinhagen <[email protected]> Signed-off-by: rstein <[email protected]>
14af17d
to
2bc568d
Compare
Signed-off-by: Ralph J. Steinhagen <[email protected]>
2bc568d
to
d2458b5
Compare
There are several issues with the failing test including: 1) This PR will be merged, but the remaining issues and the problems with the flaky tests need to be addressed and investigated further. |
This PR introduces a set of conversion functions that for production use should be inlined/compile-time-merged.
These functions leverage SIMD capabilities to improve the performance of complex data transformations. Original vectorisiation example by @mattkretz: https://godbolt.org/z/7MT71MbGz
New Conversion Blocks:
Performance Assessment:
The following table summarizes the nominal clock cycles for each assembly instruction, demonstrating the efficiency improvements achieved through SIMD vectorization. Some functions do not (yet) use SIMD implementation due to the missing SIMD-permute API. This should be improved once this API becomes available.
As an illustrative example to assess the asm-related efficiency of various possible implementations: https://godbolt.org/z/obexWhjMq