-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add partitioned probe support for hash joins #22108
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
Merged
rapids-bot
merged 30 commits into
rapidsai:release/26.06
from
PointKernel:chunked-hash-join-probe
May 20, 2026
Merged
Changes from 27 commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
0edf65f
Add partitioned probe support for hash joins
PointKernel 2a3ef4c
Clean up rmm policy mr usage
PointKernel d89b384
Use custom kernels + file split
PointKernel 903f5ec
Remove redundant thrust::reduce in partitioned join retrieve
PointKernel c03dd98
Use DEFAULT_JOIN_BLOCK_SIZE and DEFAULT_JOIN_CG_SIZE directly
PointKernel e586b56
Minor cleanup with modern CCCL
PointKernel a5879bc
Cleanups
PointKernel ef0d6f4
Improve retrieve kenrel perf with shared memory buffer
PointKernel d91c171
Replace full_join_complement with full_join_finalize
PointKernel e0ecc1b
Use a common full join finalize logic
PointKernel fd73529
Speed up full_join finalize with consume-in-place and fused compact
PointKernel 9ada51a
Rename full_join_finalize -> finalize_partitioned_full_join; sort CMa…
PointKernel d11bf76
Address lamarrr review: explicit mode check in benchmark, delete copy…
PointKernel 36f212e
Use cooperative_groups::invoke_one instead of thread_rank() == 0
PointKernel 2d670d2
Rename count_each -> partitioned_count kernel and associated files
PointKernel 444d121
Rename retrieve -> partitioned_retrieve kernel and associated files; …
PointKernel 04bcf07
Rename full_join_finalize.cpp -> partitioned_full_join_finalize.cpp
PointKernel f656c0b
Rename to finalize_partitioned_full_join.cpp to match API name
PointKernel 3e6c606
Clean up stale comments: remove ported language, fix exclusive scan -…
PointKernel ed8ad93
Add doc comment to partitioned_count_kernel
PointKernel bb86c18
Formatting
PointKernel 43d0e82
Address shrshi review nits and rename cnt -> match_count
PointKernel 7be83f3
Replace raw int64_t with thread_index_type
PointKernel e567072
Use left/right naming
PointKernel 55a3633
Address CodeRabbit review feedback
PointKernel f2c9fff
Fix probe_table_num_rows reference in match_context.cu
PointKernel 3a47653
Use right/left naming for table nouns in finalize_full_join and tests
PointKernel 87765a3
Simplify partitioned_count_kernel: drop tile.all short-circuit, fuse …
PointKernel 594a532
Add tile size check + use cuda::std::distance
PointKernel c455b21
Merge remote-tracking branch 'upstream/release/26.06' into chunked-ha…
PointKernel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| /* | ||
| * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION. | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| */ | ||
|
|
||
| #include "join/join_common_utils.hpp" | ||
|
|
||
| #include <cudf/detail/nvtx/ranges.hpp> | ||
| #include <cudf/join/hash_join.hpp> | ||
| #include <cudf/join/join.hpp> | ||
| #include <cudf/types.hpp> | ||
| #include <cudf/utilities/memory_resource.hpp> | ||
| #include <cudf/utilities/span.hpp> | ||
|
|
||
| #include <rmm/cuda_stream_view.hpp> | ||
| #include <rmm/device_uvector.hpp> | ||
|
|
||
| namespace cudf { | ||
|
|
||
| std::pair<std::unique_ptr<rmm::device_uvector<size_type>>, | ||
| std::unique_ptr<rmm::device_uvector<size_type>>> | ||
| hash_join::finalize_partitioned_full_join( | ||
| cudf::host_span<cudf::device_span<size_type const> const> left_partials, | ||
| cudf::host_span<cudf::device_span<size_type const> const> right_partials, | ||
| size_type left_table_num_rows, | ||
| size_type right_table_num_rows, | ||
| rmm::cuda_stream_view stream, | ||
| rmm::device_async_resource_ref mr) | ||
| { | ||
| CUDF_FUNC_RANGE(); | ||
| return cudf::detail::finalize_full_join( | ||
| left_partials, right_partials, left_table_num_rows, right_table_num_rows, stream, mr); | ||
| } | ||
|
|
||
| } // namespace cudf |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| /* | ||
| * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION. | ||
| * SPDX-License-Identifier: Apache-2.0 | ||
| */ | ||
|
|
||
| // Custom hash-join probe kernels that give cudf direct control over kernel launches. | ||
| // Uses the cuco ref type for hash-table access (storage, probing scheme, predicate). | ||
|
|
||
| #pragma once | ||
|
|
||
| #include "join/join_common_utils.hpp" | ||
|
|
||
| #include <cudf/detail/join/join.hpp> | ||
| #include <cudf/hashing.hpp> | ||
| #include <cudf/types.hpp> | ||
|
|
||
| #include <cuco/pair.cuh> | ||
|
|
||
| namespace cudf::detail { | ||
|
|
||
| /// The probe key type stored in the hash table: {hash_value, row_index}. | ||
| using probe_key_type = cuco::pair<hash_value_type, size_type>; | ||
|
|
||
| } // namespace cudf::detail |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.