-
Notifications
You must be signed in to change notification settings - Fork 916
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
Add optional-iterator support to indexalator #9306
Add optional-iterator support to indexalator #9306
Conversation
Codecov Report
@@ Coverage Diff @@
## branch-21.12 #9306 +/- ##
================================================
- Coverage 10.79% 10.77% -0.02%
================================================
Files 116 116
Lines 18869 19390 +521
================================================
+ Hits 2036 2090 +54
- Misses 16833 17300 +467
Continue to review full report at Codecov.
|
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.
Looks good, just a few nitpicks.
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.
Just one more thing I'm a bit concerned but may not be able to address for now: The tests calls this->iterator_test_thrust(expected_values, it_dev, host_values.size());
, instead of using the macro EXPECT_COLUMNS_EQUAL
etc. If a test fails, we may have difficulty locating which line it is failing.
@gpucibot merge |
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 #9306 The 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 renamed `copy_tests.cpp` and the test that launched to the internal `cudf::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 Authors: - David Wendt (https://github.com/davidwendt) Approvers: - Bradley Dice (https://github.com/bdice) - Robert Maynard (https://github.com/robertmaynard) - Jake Hemstad (https://github.com/jrhemstad) URL: #9324
This PR adds support for the
optional-iterator
interface to thecudf::detail::indexalator
. This will allow replacing usages ofpair-iterator
in future PR(s). This also includes gtests that were missing for theindexalator
.