Skip to content

Add primitive row dispatch support for semi/anti join and cudf::contains - #19518

Merged
rapids-bot[bot] merged 6 commits into
NVIDIA:branch-25.10from
PointKernel:fix-contains-nan
Jul 29, 2025
Merged

Add primitive row dispatch support for semi/anti join and cudf::contains#19518
rapids-bot[bot] merged 6 commits into
NVIDIA:branch-25.10from
PointKernel:fix-contains-nan

Conversation

@PointKernel

Copy link
Copy Markdown
Member

Description

This PR is a follow-up to #19361, which was reverted due to a NaN handling bug and incorrect CG size used in explicit instantiations. This revised PR addresses those issues and retargets the work for the 25.10 release.

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@PointKernel PointKernel self-assigned this Jul 28, 2025
@PointKernel
PointKernel requested a review from a team as a code owner July 28, 2025 18:05
@PointKernel PointKernel added the feature request New feature or request label Jul 28, 2025
@PointKernel
PointKernel requested a review from a team as a code owner July 28, 2025 18:05
@PointKernel PointKernel added libcudf Affects libcudf (C++/CUDA) code. Performance Performance related issue non-breaking Non-breaking change labels Jul 28, 2025
@github-actions github-actions Bot added the CMake CMake build issue label Jul 28, 2025
@ttnghia

ttnghia commented Jul 28, 2025

Copy link
Copy Markdown
Contributor

Can you point out what is (new) fixed in this PR vs the original work please?

@bdice bdice left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes from the previous implementation look good. Thanks!

Comment on lines +57 to +63
// Only use primitive row operators for non-floating-point types since they don't handle NaN
// equality
auto const has_floating_point =
std::any_of(haystack.begin(), haystack.end(), [](auto const& col) {
return cudf::is_floating_point(col.type());
});
if (cudf::is_primitive_row_op_compatible(haystack) && !has_floating_point) {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ttnghia voila

Primitive row operators are used only when the data type is an integer. A unit test has been added to cover this scenario as well

@PointKernel

Copy link
Copy Markdown
Member Author

/merge

@rapids-bot
rapids-bot Bot merged commit 6ed64e8 into NVIDIA:branch-25.10 Jul 29, 2025
172 of 174 checks passed
@PointKernel
PointKernel deleted the fix-contains-nan branch July 29, 2025 03:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CMake CMake build issue feature request New feature or request libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change Performance Performance related issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants