-
Notifications
You must be signed in to change notification settings - Fork 915
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 in support for NULL_LOGICAL_AND and NULL_LOGICAL_OR binops #10016
Conversation
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.
one minor question
I am not seeing src/binaryop/compiled/NullLogicalOr.cu nor src/binaryop/compiled/NullLogicalAnd.cu in the PR? |
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.
Should we add convenience functions in BinaryOperable
to make this a bit cleaner to call from the Java API?
Will this PR finish the remainder of #8980? |
yes I just linked the two |
Codecov Report
@@ Coverage Diff @@
## branch-22.02 #10016 +/- ##
================================================
- Coverage 10.49% 10.40% -0.09%
================================================
Files 119 119
Lines 20305 20557 +252
================================================
+ Hits 2130 2139 +9
- Misses 18175 18418 +243
Continue to review full report at Codecov.
|
I posted a small performance improvement that replaced the conditionals with boolean operations. This showed an 11% performance boost on operations that do not have nulls in them. I have no idea why it didn't help the operations that do have nulls in them. It might be nice to look at the AST at some point to see if we can make an improvement there too, but that is separate. |
rerun tests |
rerun tests |
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.
+1 this looks good to me.
rerun tests |
Something is going on with the build where the python tests are failing and I have no idea what it could be. Some of them have errors like
They all appear to indicate that I am having problems importing 'cudaDeviceAttr', but that is something cuda specific and I didn't touch anything python, or RMM, etc. Any help debugging this would really be appreciated. |
rerun tests |
@gpucibot merge |
These already exist as a part of the AST. Spark's AND/OR implementations follow these requirements and to be able to re-implement it using existing CUDF functionality ended up being very expensive. We found that this one change could cut almost 13% off the total run time on TPC-DS query 28. AND/OR are common enough in all queries we expect this to have a major performance impact generally.
We tried to use the AST version instead, but depending on the hardware used the overhead of AST does not pay for itself when the input/intermediate outputs are boolean columns. It appears to be because the amount of memory transfers saved is relatively small in most boolean cases and on large GPUs like the a100 the intermediate results might even fit entirely in the L2 cache.