Skip to content

Tuning policy cleanup 2/2#9712

Merged
bernhardmgruber merged 10 commits into
NVIDIA:mainfrom
bernhardmgruber:policy_cleanup_2
Jul 10, 2026
Merged

Tuning policy cleanup 2/2#9712
bernhardmgruber merged 10 commits into
NVIDIA:mainfrom
bernhardmgruber:policy_cleanup_2

Conversation

@bernhardmgruber

@bernhardmgruber bernhardmgruber commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Fixes part of #9378

@bernhardmgruber bernhardmgruber requested a review from a team as a code owner July 6, 2026 09:06
@bernhardmgruber bernhardmgruber requested a review from elstehle July 6, 2026 09:06
@github-project-automation github-project-automation Bot moved this to Todo in CCCL Jul 6, 2026
@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Review in CCCL Jul 6, 2026
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 626bc42f-d2a3-4a06-9f53-38a907b4875a

📥 Commits

Reviewing files that changed from the base of the PR and between 01871df and b488e45.

📒 Files selected for processing (27)
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/dispatch_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/test/catch2_test_device_partition_env.cu
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
✅ Files skipped from review due to trivial changes (20)
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
🚧 Files skipped from review as they are similar to previous changes (6)
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_scan_by_key.cuh
  • cub/test/catch2_test_device_partition_env.cu
  • cub/cub/agent/agent_scan_by_key.cuh

📝 Walkthrough

Summary by CodeRabbit

  • Documentation

    • Clarified that legacy CUB dispatch and agent policy interfaces are deprecated since version 3.5.
    • Updated compiler deprecation messages to direct users to the corresponding tuning APIs.
    • Added removal guidance targeting CCCL 4.0 where applicable.
  • Compatibility

    • Preserved existing algorithm behavior and template parameters while improving internal policy organization.
  • Tests

    • Added coverage validating partition policy construction and comparison behavior.

Walkthrough

Changes

This change documents CUB policy and dispatch deprecations since version 3.5, updates guidance to the tuning APIs, moves scan-by-key policy implementation into cub::detail, updates internal policy users, and adds policy-shape test coverage.

Deprecation and policy migration

Layer / File(s) Summary
Agent policy deprecation documentation
cub/cub/agent/*, cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
Adds versioned Doxygen deprecation markers to agent and tuning policy aliases.
Scan-by-key policy detail refactor
cub/cub/agent/agent_scan_by_key.cuh, cub/cub/device/dispatch/dispatch_scan_by_key.cuh, cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh, cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
Moves the scan-by-key policy implementation into cub::detail, changes the public policy to a deprecated forwarding alias, and updates internal and test policy references.
Dispatch deprecation metadata
cub/cub/device/dispatch/dispatch_*.cuh
Adds versioned deprecation documentation, redirects diagnostic messages to tuning APIs, revises CCCL 4.0 removal comments, and renames an internal batch-memcpy policy alias.
Policy shape validation
cub/test/catch2_test_device_partition_env.cu
Adds GCC-gated checks for PartitionPolicy semiregularity, aggregate initialization, and equality behavior.

Possibly related PRs

  • NVIDIA/cccl#9714: Both changes update scan-by-key dispatch integration with the tuning and agent_scan_by_key_policy machinery.

Suggested reviewers: pauleonix, davebayer


Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

🧹 Nitpick comments (4)
cub/test/catch2_test_device_adjacent_difference_env.cu (1)

277-281: 📐 Maintainability & Code Quality | 🔵 Trivial

suggestion: This to_string lambda is duplicated verbatim across ~19 catch2 policy-property test files in this cohort. Consider hoisting it into a shared test header (e.g. a catch2_test_helper.h or similar) to avoid copy-paste drift.
[optional_and_nitpick]

cub/test/catch2_test_device_memcpy_env.cu (1)

244-251: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

suggestion: the to_string lambda plus REQUIRE(!to_string(...).empty()) boilerplate is duplicated verbatim across nearly every one of the ~20 catch2 policy test files touched in this cohort. Consider extracting a shared helper (e.g. to_string_via_ostream in a common test utility header) to avoid this repeated pattern.

cub/test/catch2_test_device_radix_sort_env.cu (1)

1569-1579: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

suggestion: p1_scan/p2_scan (cub::ScanPolicy) is built and used in the aggregate comparison via p1 == p2, but unlike every other sub-policy here it gets no dedicated STATIC_REQUIRE(p1_scan == p2_scan) and no REQUIRE(!to_string(p1_scan).empty()). ScanPolicy has its own operator<</operator== overloads (see tuning_radix_sort.cuh), so this leaves that sub-policy's streaming/equality contract untested in isolation, unlike histogram/exclusive_sum/onesweep/downsweep/alt_downsweep/upsweep/alt_upsweep/single_tile.

Add missing scan sub-policy checks
   STATIC_REQUIRE(p1_onesweep == p2_onesweep);
   STATIC_REQUIRE_FALSE(p1_onesweep != p2_onesweep);
 
+  STATIC_REQUIRE(p1_scan == p2_scan);
+  STATIC_REQUIRE_FALSE(p1_scan != p2_scan);
+
   STATIC_REQUIRE(p1_downsweep == p2_downsweep);
   REQUIRE(!to_string(p1_onesweep).empty());
+  REQUIRE(!to_string(p1_scan).empty());
   REQUIRE(!to_string(p1_downsweep).empty());

Also applies to: 1613-1622, 1675-1717

cub/test/catch2_test_device_segmented_sort_keys_env.cu (1)

669-674: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

suggestion: the to_string lambda (stream to std::ostringstream, return .str()) is duplicated verbatim across ~20 catch2 policy test files in this cohort. Consider hoisting it into a shared test utility header to avoid the copy-paste drift risk.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c935cb35-4f69-4b9d-8aae-c6bc67ce8749

📥 Commits

Reviewing files that changed from the base of the PR and between 4c7d3e6 and 4058816.

📒 Files selected for processing (46)
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/dispatch_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/test/catch2_test_device_adjacent_difference_env.cu
  • cub/test/catch2_test_device_find_bound_sorted_values_env.cu
  • cub/test/catch2_test_device_find_env.cu
  • cub/test/catch2_test_device_for_env.cu
  • cub/test/catch2_test_device_histogram_env.cu
  • cub/test/catch2_test_device_memcpy_env.cu
  • cub/test/catch2_test_device_merge_env.cu
  • cub/test/catch2_test_device_merge_sort_env.cu
  • cub/test/catch2_test_device_partition_env.cu
  • cub/test/catch2_test_device_radix_sort_env.cu
  • cub/test/catch2_test_device_reduce_env.cu
  • cub/test/catch2_test_device_run_length_encode_env.cu
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
  • cub/test/catch2_test_device_scan_by_key_env.cu
  • cub/test/catch2_test_device_scan_env.cu
  • cub/test/catch2_test_device_segmented_radix_sort_env.cu
  • cub/test/catch2_test_device_segmented_reduce_env.cu
  • cub/test/catch2_test_device_segmented_scan_env.cu
  • cub/test/catch2_test_device_segmented_sort_keys_env.cu
  • cub/test/catch2_test_device_select_env.cu
  • cub/test/catch2_test_device_transform_env.cu

@github-actions

This comment has been minimized.

@bernhardmgruber bernhardmgruber changed the title Tuning policy cleanup 2/N Tuning policy cleanup 2/2 Jul 8, 2026
@github-actions

This comment has been minimized.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
cub/cub/device/dispatch/dispatch_scan_by_key.cuh (1)

686-855: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Free dispatch() body duplicates __invoke/temp-storage logic verbatim.

Line-by-line matches the class method's temp-storage sizing/aliasing and kernel launch sequence (385-502), so no drift today, but two independently-maintained copies of the decoupled-lookback temp-storage protocol is a risk if one is patched without the other. Given this mirrors the same transitional pattern used elsewhere in the ongoing tuning-policy migration (class retained only for the deprecated alias), leaving as-is for now, but worth collapsing once DispatchScanByKey is removed in CCCL 4.0.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c401991c-6d50-4c2b-9479-9f253c7d4a46

📥 Commits

Reviewing files that changed from the base of the PR and between 18cc85c and 01871df.

📒 Files selected for processing (28)
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/dispatch_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/test/catch2_test_device_partition_env.cu
  • cub/test/catch2_test_device_reduce_env.cu
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
✅ Files skipped from review due to trivial changes (18)
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
🚧 Files skipped from review as they are similar to previous changes (7)
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh

@coderabbitai coderabbitai Bot 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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🧹 Nitpick comments (1)
cub/cub/device/dispatch/dispatch_scan_by_key.cuh (1)

686-855: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Free dispatch() body duplicates __invoke/temp-storage logic verbatim.

Line-by-line matches the class method's temp-storage sizing/aliasing and kernel launch sequence (385-502), so no drift today, but two independently-maintained copies of the decoupled-lookback temp-storage protocol is a risk if one is patched without the other. Given this mirrors the same transitional pattern used elsewhere in the ongoing tuning-policy migration (class retained only for the deprecated alias), leaving as-is for now, but worth collapsing once DispatchScanByKey is removed in CCCL 4.0.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c401991c-6d50-4c2b-9479-9f253c7d4a46

📥 Commits

Reviewing files that changed from the base of the PR and between 18cc85c and 01871df.

📒 Files selected for processing (28)
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/dispatch_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/test/catch2_test_device_partition_env.cu
  • cub/test/catch2_test_device_reduce_env.cu
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
✅ Files skipped from review due to trivial changes (18)
  • cub/cub/agent/agent_radix_sort_upsweep.cuh
  • cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
  • cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_reduce_by_key.cuh
  • cub/cub/agent/agent_select_if.cuh
  • cub/cub/agent/agent_radix_sort_onesweep.cuh
  • cub/cub/agent/agent_radix_sort_histogram.cuh
  • cub/cub/device/dispatch/dispatch_segmented_sort.cuh
  • cub/cub/agent/agent_scan.cuh
  • cub/cub/agent/agent_adjacent_difference.cuh
  • cub/cub/device/dispatch/dispatch_merge_sort.cuh
  • cub/cub/device/dispatch/dispatch_segmented_radix_sort.cuh
  • cub/cub/device/dispatch/dispatch_histogram.cuh
  • cub/cub/device/dispatch/dispatch_unique_by_key.cuh
  • cub/cub/agent/agent_radix_sort_downsweep.cuh
  • cub/cub/device/dispatch/dispatch_segmented_reduce.cuh
  • cub/cub/device/dispatch/dispatch_reduce.cuh
  • cub/cub/device/dispatch/dispatch_radix_sort.cuh
🚧 Files skipped from review as they are similar to previous changes (7)
  • cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
  • cub/cub/agent/agent_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_three_way_partition.cuh
  • cub/test/catch2_test_device_scan_by_key_custom_policy_hub.cu
  • cub/cub/device/dispatch/dispatch_scan.cuh
  • cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
  • cub/cub/device/dispatch/dispatch_select_if.cuh
🛑 Comments failed to post (1)
cub/cub/device/dispatch/dispatch_scan_by_key.cuh (1)

886-899: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

important: wrong API name in deprecation message.

CCCL_DEPRECATED_BECAUSE("Use the tuning API for DeviceScan") should reference DeviceScanByKey, not DeviceScan. This is inconsistent with the analogous message in agent_scan_by_key.cuh ("Use the tuning API for DeviceScanByKey") and with the correct log strings elsewhere in this same file (lines 612, 718).

🩹 Proposed fix
 using DispatchScanByKey
-  CCCL_DEPRECATED_BECAUSE("Use the tuning API for DeviceScan") = detail::scan_by_key::dispatch_scan_by_key<
+  CCCL_DEPRECATED_BECAUSE("Use the tuning API for DeviceScanByKey") = detail::scan_by_key::dispatch_scan_by_key<
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

using DispatchScanByKey
  CCCL_DEPRECATED_BECAUSE("Use the tuning API for DeviceScanByKey") = detail::scan_by_key::dispatch_scan_by_key<
    KeysInputIteratorT,
    ValuesInputIteratorT,
    ValuesOutputIteratorT,
    EqualityOp,
    ScanOpT,
    InitValueT,
    OffsetT,
    AccumT,
    PolicyHub,
    PolicySelector,
    KernelSource,
    KernelLauncherFactory>;

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Comment thread cub/test/catch2_test_device_partition_env.cu Outdated
Comment thread cub/cub/agent/agent_scan_by_key.cuh Outdated
@bernhardmgruber bernhardmgruber enabled auto-merge (squash) July 10, 2026 14:10
@github-actions

Copy link
Copy Markdown
Contributor

🥳 CI Workflow Results

🟩 Finished in 1h 28m: Pass: 100%/287 | Total: 3d 11h | Max: 1h 09m | Hits: 93%/215664

See results here.

@bernhardmgruber bernhardmgruber merged commit 0fa6cea into NVIDIA:main Jul 10, 2026
305 of 306 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants