-
Notifications
You must be signed in to change notification settings - Fork 917
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
Use optional-iterator for copy-if-else kernel #9324
Use optional-iterator for copy-if-else kernel #9324
Conversation
Compile time improvements.
|
This sounds fishy. We should strive for black box testing of public APIs and not be reaching into testing kernels directly. |
I agree. I was not confident enough to just remove it. It appeared to be a valiant attempt to force a test that required executing with multiple blocks but without needing to create a large dataset. I'm certainly ok with removing it. Otherwise, I would welcome advice on how to replace it. Perhaps this merits a separate PR. |
Codecov Report
@@ Coverage Diff @@
## branch-21.12 #9324 +/- ##
================================================
- Coverage 10.79% 10.75% -0.04%
================================================
Files 116 116
Lines 18869 19483 +614
================================================
+ Hits 2036 2096 +60
- Misses 16833 17387 +554
Continue to review full report at Codecov.
|
Removed the |
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.
This looks great. Vastly cleaner!
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.
Also, the copy_tests.cu was renamed copy_tests.cpp
Nice!
@gpucibot merge |
CUDA memcheck write error was introduced in #9324 (by me). The `has_nulls` handling had been reworked but a logic error allowed writing past the end of the output column. This PR also includes fixes to remove compile warnings in `group_correlation.cu` that only start to appear in nvcc 11.4. Authors: - David Wendt (https://github.com/davidwendt) Approvers: - https://github.com/nvdbaranec - Nghia Truong (https://github.com/ttnghia) URL: #9467
This PR changes the
cudf::detail::copy_if_else
utility functions to accept an optional-iterator instead of a pair-iterator. This improves the compile time of source files by generating 4x less kernels since the two input data arrays can each have nulls requiring 4 different pair-iterators to be created to call it. The optional-iterator allows the nulls check to occur at runtime instead of compile time.The changes in this PR are for the callers of
detail::copy_if_else
to provide optional-iterators instead of pair-iterators. This PR is dependent on the changes in #9306The benchmarks for the effected calling functions showed no significant change in runtime performance using the single optional-iterator over 4 unique pair-iterators. Two additional benchmarks are included cover non-null measurement which this PR impacts the most.
Also, the
copy_tests.cu
was renamedcopy_tests.cpp
and the test that launched to the internalcudf::detail::copy_if_else_kernel
was replaced with one with a data-set large enough to require multiple blocks.Related changes for the strings specific
cudf::strings::detail::copy_if_else
are in #9266