-
Notifications
You must be signed in to change notification settings - Fork 59
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 optimization #171
Comments
I just started to investigated it quickly. The code generated by About SMID, the AVX instructions for unsigned 64 bits integers ( |
I think we can get away with 32 bit instructions. We only really need to check the first 32-bit word of each 64-bit entry for partial key. 16 bit index entries contain 34 bits of key and 17 bit have 33, but I think we can simply ignore the two last bits and just do full key comparison in case the first 32 bits match. I don't have that much experience with SIMD myself, but I suppose it is possible to load and pack resiter with every second word. Or run the search on all 32 bit words and then filter out every odd result.
So the whole thing should be:
Then, for each 256 bits:
|
IndexTable::find_entry
could benefit from SIMD optimizations for parallel entry search.The text was updated successfully, but these errors were encountered: