Skip to content
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

Add SIMD versions of scrambler and vector multiplication #361

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

vankxr
Copy link
Contributor

@vankxr vankxr commented May 19, 2024

Adds x86 SIMD implementations of scrambler and vectorcf_mul. Some consolidation of the configuration file which is ready for other vector* module SIMD implementations.

For now, I only implemented those two since it's what currently speeds up my application, given the modules I am utilizing.
Attached is a text file with results of the included benchmark where the performance improvement can be seen. For the scrambler module, packetizer results are used to compare between implementations. For the vectorcf_mul module, qdetector is used. In the case of qdetector, the performance improvement is kind of negligible, since the vector multiplication is not where most of the time is spent. The packetizer, however greatly benefits from the scrambler SIMD implementation, showing about a 4x to 5x performance difference when comparing the portable version with the AVX2 version.

As for AVX512, the performance increase is in the error margin, and sometimes shows a degradation. Kind of expected, given past experiences with it, and maybe that's why Intel killed it on consumer CPUs. Nevertheless it is there, shall anyone find it useful.

Benchmark ran on an Intel 11th gen 11950H CPU
liquid_perf.txt

As a sidenote, I have made some experiments with Manchester encoding using x86 SIMD instructions, which I think would fit in this library.
https://github.com/vankxr/manchester-simd

Copy link

codecov bot commented May 19, 2024

Codecov Report

Attention: Patch coverage is 72.00000% with 21 lines in your changes missing coverage. Please review.

Project coverage is 78.010%. Comparing base (e56e4dd) to head (560678b).
Report is 4 commits behind head on master.

Files Patch % Lines
src/vector/src/vectorcf_mul.avx.c 44.736% 21 Missing ⚠️
Additional details and impacted files
@@              Coverage Diff              @@
##            master      #361       +/-   ##
=============================================
- Coverage   78.040%   78.010%   -0.030%     
=============================================
  Files          207       208        +1     
  Lines        18967     19014       +47     
  Branches      2550      2555        +5     
=============================================
+ Hits         14802     14833       +31     
- Misses        3260      3278       +18     
+ Partials       905       903        -2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Signed-off-by: João Silva <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant