Vectorize BQVectorUtils#packAsBinary#132923
Merged
iverase merged 2 commits intoelastic:mainfrom Aug 14, 2025
Merged
Conversation
Collaborator
|
Pinging @elastic/es-search-relevance (Team:Search Relevance) |
benwtrent
reviewed
Aug 14, 2025
.../main21/java/org/elasticsearch/simdvec/internal/vectorization/PanamaESVectorUtilSupport.java
Outdated
Show resolved
Hide resolved
benwtrent
approved these changes
Aug 14, 2025
Member
benwtrent
left a comment
There was a problem hiding this comment.
I like it!
I think the bit shifts values should be a private static final value so we don't need to create a new intvector every time the shift is called. But, it looks good to me :)
joshua-adams-1
pushed a commit
to joshua-adams-1/elasticsearch
that referenced
this pull request
Aug 15, 2025
Vectorize by using a helper array that defines the shifts we need to apply to the vector elements.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
After #132820, the method BQVectorUtils#packAsBinary can be easily vectorize by using a helper array that defines the shifts we need to apply to the vector elements.
For 128 bits in my mac, the improvements are almost 2x:
For 256 bits on a GCP instancem looks similar:
For 512 bits on a GCP instance does look so great, still an improvement though. I tried to optimize this case by doing two bytes at a time and shifting the second to build a short but it did not help.
relates #132761