-
Notifications
You must be signed in to change notification settings - Fork 143
Reduce binary size of refine functions #1095
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
Conversation
|
The |
|
The binary size is nicely reduced, but test fail due to undefined symbols.
|
|
The error is related to the filter type used for instantiating the search kernels. I am looking into the details. |
643f3b4 to
028e98b
Compare
achirkin
left a comment
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.
Thanks Tamas, the code looks good to me. I have couple comments to improve my understanding of the new indexing types.
|
tfeher
left a comment
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 Artem for the review, I have addressed the issues.
cpp/src/neighbors/ivf_flat/ivf_flat_interleaved_scan_float_int64_t.cu
Outdated
Show resolved
Hide resolved
tfeher
left a comment
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.
Thanks Divye for the review, I have addressed the issues.
cpp/src/neighbors/ivf_flat/ivf_flat_interleaved_scan_float_int64_t.cu
Outdated
Show resolved
Hide resolved
|
/merge |
The refine functions that work with GPU data use IVF-Flat under the hood to perform the refinement operation. This PR adds extern template declarations for `ivfflat_interleaved_scan` and uses these in the refine functions. This way we avoid recompiling the IVF-Flat search kernels, and save binary size. Before this PR `ivfflat_interleaved_scan` was compiled through the `ivf_flat::search()` function instantiations. But the function symbols were not available due to inlining. This PR also add explicit instantiations for `ivfflat_interleaved_scan`, and now both `ivf_flat::search` and `refine` can use the same interleaved scan function. Authors: - Tamas Bela Feher (https://github.com/tfeher) Approvers: - Artem M. Chirkin (https://github.com/achirkin) - Divye Gala (https://github.com/divyegala) URL: rapidsai#1095
The refine functions that work with GPU data use IVF-Flat under the hood to perform the refinement operation. This PR adds extern template declarations for `ivfflat_interleaved_scan` and uses these in the refine functions. This way we avoid recompiling the IVF-Flat search kernels, and save binary size. Before this PR `ivfflat_interleaved_scan` was compiled through the `ivf_flat::search()` function instantiations. But the function symbols were not available due to inlining. This PR also add explicit instantiations for `ivfflat_interleaved_scan`, and now both `ivf_flat::search` and `refine` can use the same interleaved scan function. Authors: - Tamas Bela Feher (https://github.com/tfeher) Approvers: - Artem M. Chirkin (https://github.com/achirkin) - Divye Gala (https://github.com/divyegala) URL: rapidsai#1095
The refine functions that work with GPU data use IVF-Flat under the hood to perform the refinement operation. This PR adds extern template declarations for
ivfflat_interleaved_scanand uses these in the refine functions. This way we avoid recompiling the IVF-Flat search kernels, and save binary size.Before this PR
ivfflat_interleaved_scanwas compiled through theivf_flat::search()function instantiations. But the function symbols were not available due to inlining. This PR also add explicit instantiations forivfflat_interleaved_scan, and now bothivf_flat::searchandrefinecan use the same interleaved scan function.