-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Vectorise expand8 in ForUtil using JDK Vector API #15198
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
Vectorise expand8 in ForUtil using JDK Vector API #15198
Conversation
This PR does not have an entry in lucene/CHANGES.txt. Consider adding one. If the PR doesn't need a changelog entry, then add the skip-changelog label to it and you will stop receiving this reminder on future updates to the PR. |
2070af4
to
c95ab5b
Compare
c95ab5b
to
883afea
Compare
lucene util benchmark
|
883afea
to
de7f475
Compare
Very cool -- thank you for running JFR (micro benchmark) and luceneutil (macro?)! What exactly is |
lucene/core/src/java/org/apache/lucene/internal/vectorization/VectorUtilSupport.java
Show resolved
Hide resolved
Thank you @mikemccand, @jpountz for reviewing the PR.
The patch vectorises ForUtil.expand8 with the JDK Vector API. Added Javadocs now! |
Shows good speedup in the nightly benchmarks ~(1-3.5%). Will push an annotation. https://benchmarks.mikemccandless.com/2025.09.21.18.04.40.html |
This PR optimizes the expand8 routine by leveraging the JDK Vector API.
Benchmarks
I have validated performance using a standalone benchmark (see postings_expand_benchmark) for block_size: 256. Key take-aways are as follows. Benchmarks ran on i5-13600k and 256 bit vectors.
Lucene Microbenchmarks
Summary
bpv -9,10 uses primitive size as 16, hence no change in performance.