---
id: pr-cccl-cub-8836
repo: NVIDIA/cccl
pr: 8836
title: Rename `block_threads` -> `threads_per_block`
author: bernhardmgruber
date: '2026-05-06'
url: https://github.com/NVIDIA/cccl/pull/8836
source_category: upstream-code
architectures:
- sm100
tags:
- benchmark kernel
- block
- cuda kernel
- sort
- warp
techniques:
- warp-specialization
hardware_features: []
kernel_types:
- sort
languages:
- cuda-cpp
captured_at: '2026-05-16'
status: merged
merge_sha: 16f96cfcb4fa59724627dd2d4d65a41bd39fbcf4
inclusion_reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.
changed_paths:
- cub/benchmarks/bench/radix_sort/policy_selector.h
- cub/benchmarks/bench/segmented_reduce/base.cuh
- cub/benchmarks/bench/transform/common.h
- cub/cub/agent/agent_batched_topk.cuh
- cub/cub/agent/agent_for.cuh
- cub/cub/agent/agent_histogram.cuh
- cub/cub/agent/agent_merge.cuh
- cub/cub/agent/agent_merge_sort.cuh
- cub/cub/agent/agent_topk.cuh
- cub/cub/block/block_load_to_shared.cuh
- cub/cub/block/block_radix_rank.cuh
- cub/cub/block/specializations/block_reduce_warp_reductions.cuh
- cub/cub/block/specializations/block_topk_air.cuh
- cub/cub/device/dispatch/dispatch_adjacent_difference.cuh
- cub/cub/device/dispatch/dispatch_batch_memcpy.cuh
- cub/cub/device/dispatch/dispatch_batched_topk.cuh
- cub/cub/device/dispatch/dispatch_find.cuh
- cub/cub/device/dispatch/dispatch_for.cuh
- cub/cub/device/dispatch/dispatch_histogram.cuh
- cub/cub/device/dispatch/dispatch_merge.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_reduce_deterministic.cuh
- cub/cub/device/dispatch/dispatch_reduce_nondeterministic.cuh
- cub/cub/device/dispatch/dispatch_rle.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_scan.cuh
- cub/cub/device/dispatch/dispatch_segmented_sort.cuh
- cub/cub/device/dispatch/dispatch_select_if.cuh
- cub/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh
- cub/cub/device/dispatch/dispatch_three_way_partition.cuh
- cub/cub/device/dispatch/dispatch_topk.cuh
- cub/cub/device/dispatch/dispatch_transform.cuh
- cub/cub/device/dispatch/dispatch_unique_by_key.cuh
- cub/cub/device/dispatch/kernels/kernel_batched_topk.cuh
- cub/cub/device/dispatch/kernels/kernel_for_each.cuh
- cub/cub/device/dispatch/kernels/kernel_histogram.cuh
- cub/cub/device/dispatch/kernels/kernel_merge_sort.cuh
- cub/cub/device/dispatch/kernels/kernel_radix_sort.cuh
- cub/cub/device/dispatch/kernels/kernel_reduce.cuh
- cub/cub/device/dispatch/kernels/kernel_reduce_deterministic.cuh
- cub/cub/device/dispatch/kernels/kernel_scan.cuh
- cub/cub/device/dispatch/kernels/kernel_segmented_radix_sort.cuh
- cub/cub/device/dispatch/kernels/kernel_segmented_reduce.cuh
- cub/cub/device/dispatch/kernels/kernel_segmented_scan.cuh
- cub/cub/device/dispatch/kernels/kernel_segmented_sort.cuh
- cub/cub/device/dispatch/kernels/kernel_three_way_partition.cuh
- cub/cub/device/dispatch/kernels/kernel_transform.cuh
- cub/cub/device/dispatch/kernels/kernel_unique_by_key.cuh
- cub/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh
- cub/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh
- cub/cub/device/dispatch/tuning/tuning_batched_topk.cuh
- cub/cub/device/dispatch/tuning/tuning_find.cuh
- cub/cub/device/dispatch/tuning/tuning_for.cuh
- cub/cub/device/dispatch/tuning/tuning_histogram.cuh
- cub/cub/device/dispatch/tuning/tuning_merge.cuh
- cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh
- cub/cub/device/dispatch/tuning/tuning_radix_sort.cuh
- cub/cub/device/dispatch/tuning/tuning_reduce.cuh
- cub/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh
- cub/cub/device/dispatch/tuning/tuning_reduce_deterministic.cuh
- cub/cub/device/dispatch/tuning/tuning_rle_non_trivial_runs.cuh
- cub/cub/device/dispatch/tuning/tuning_scan.cuh
- cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh
- cub/cub/device/dispatch/tuning/tuning_segmented_reduce.cuh
- cub/cub/device/dispatch/tuning/tuning_segmented_scan.cuh
- cub/cub/device/dispatch/tuning/tuning_segmented_sort.cuh
- cub/cub/device/dispatch/tuning/tuning_select_if.cuh
- cub/cub/device/dispatch/tuning/tuning_three_way_partition.cuh
- cub/cub/device/dispatch/tuning/tuning_topk.cuh
- cub/cub/device/dispatch/tuning/tuning_transform.cuh
- cub/cub/device/dispatch/tuning/tuning_unique_by_key.cuh
- cub/cub/util_arch.cuh
- cub/cub/util_device.cuh
- cub/cub/warp/warp_exchange.cuh
- cub/cub/warp/warp_load.cuh
- cub/cub/warp/warp_merge_sort.cuh
- cub/cub/warp/warp_store.cuh
- cub/test/catch2_test_device_reduce_env.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_reduce_max_seg_size.cu
- cub/test/catch2_test_device_select_env.cu
- cub/test/catch2_test_device_transform.cu
- cub/test/catch2_test_vsmem.cu
- cudax/include/cuda/experimental/__execution/bulk.cuh
- cudax/include/cuda/experimental/__execution/stream/adaptor.cuh
- cudax/include/cuda/experimental/__execution/stream/scheduler.cuh
- docs/cub/developer/device_scope.rst
- docs/cub/policy_selectors.rst
- docs/cub/tuning.rst
- libcudacxx/test/libcudacxx/cuda/execution/tune.pass.cpp
- python/cuda_cccl/tests/coop/test_warp_merge_sort.py
- thrust/thrust/system/cuda/detail/core/agent_launcher.h
- thrust/thrust/system/cuda/detail/core/util.h
artifact_dir: evidence/pull-bundles/cccl-cub/gh-8836
head_ref_oid: 58d71f920ee513648e6915d2ab4056b48a9f7d00
---
# Rename `block_threads` -> `threads_per_block`

- Repository: `NVIDIA/cccl`
- PR: [8836](https://github.com/NVIDIA/cccl/pull/8836)
- Decision: `Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.`
- Reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.

## Changed Paths

- `cub/benchmarks/bench/radix_sort/policy_selector.h`
- `cub/benchmarks/bench/segmented_reduce/base.cuh`
- `cub/benchmarks/bench/transform/common.h`
- `cub/cub/agent/agent_batched_topk.cuh`
- `cub/cub/agent/agent_for.cuh`
- `cub/cub/agent/agent_histogram.cuh`
- `cub/cub/agent/agent_merge.cuh`
- `cub/cub/agent/agent_merge_sort.cuh`
- `cub/cub/agent/agent_topk.cuh`
- `cub/cub/block/block_load_to_shared.cuh`
- `cub/cub/block/block_radix_rank.cuh`
- `cub/cub/block/specializations/block_reduce_warp_reductions.cuh`
- `cub/cub/block/specializations/block_topk_air.cuh`
- `cub/cub/device/dispatch/dispatch_adjacent_difference.cuh`
- `cub/cub/device/dispatch/dispatch_batch_memcpy.cuh`
- `cub/cub/device/dispatch/dispatch_batched_topk.cuh`
- `cub/cub/device/dispatch/dispatch_find.cuh`
- `cub/cub/device/dispatch/dispatch_for.cuh`
- `cub/cub/device/dispatch/dispatch_histogram.cuh`
- `cub/cub/device/dispatch/dispatch_merge.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_reduce_deterministic.cuh`
- `cub/cub/device/dispatch/dispatch_reduce_nondeterministic.cuh`
- `cub/cub/device/dispatch/dispatch_rle.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_scan.cuh`
- `cub/cub/device/dispatch/dispatch_segmented_sort.cuh`
- `cub/cub/device/dispatch/dispatch_select_if.cuh`
- `cub/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh`
- `cub/cub/device/dispatch/dispatch_three_way_partition.cuh`
- `cub/cub/device/dispatch/dispatch_topk.cuh`
- `cub/cub/device/dispatch/dispatch_transform.cuh`
- `cub/cub/device/dispatch/dispatch_unique_by_key.cuh`
- `cub/cub/device/dispatch/kernels/kernel_batched_topk.cuh`
- `cub/cub/device/dispatch/kernels/kernel_for_each.cuh`
- `cub/cub/device/dispatch/kernels/kernel_histogram.cuh`
- `cub/cub/device/dispatch/kernels/kernel_merge_sort.cuh`
- `cub/cub/device/dispatch/kernels/kernel_radix_sort.cuh`
- `cub/cub/device/dispatch/kernels/kernel_reduce.cuh`
- `cub/cub/device/dispatch/kernels/kernel_reduce_deterministic.cuh`
- `cub/cub/device/dispatch/kernels/kernel_scan.cuh`
- `cub/cub/device/dispatch/kernels/kernel_segmented_radix_sort.cuh`
- `cub/cub/device/dispatch/kernels/kernel_segmented_reduce.cuh`
- `cub/cub/device/dispatch/kernels/kernel_segmented_scan.cuh`
- `cub/cub/device/dispatch/kernels/kernel_segmented_sort.cuh`
- `cub/cub/device/dispatch/kernels/kernel_three_way_partition.cuh`
- `cub/cub/device/dispatch/kernels/kernel_transform.cuh`
- `cub/cub/device/dispatch/kernels/kernel_unique_by_key.cuh`
- `cub/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh`
- `cub/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh`
- `cub/cub/device/dispatch/tuning/tuning_batched_topk.cuh`
- `cub/cub/device/dispatch/tuning/tuning_find.cuh`
- `cub/cub/device/dispatch/tuning/tuning_for.cuh`
- `cub/cub/device/dispatch/tuning/tuning_histogram.cuh`
- `cub/cub/device/dispatch/tuning/tuning_merge.cuh`
- `cub/cub/device/dispatch/tuning/tuning_merge_sort.cuh`
- `cub/cub/device/dispatch/tuning/tuning_radix_sort.cuh`
- `cub/cub/device/dispatch/tuning/tuning_reduce.cuh`
- `cub/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh`
- `cub/cub/device/dispatch/tuning/tuning_reduce_deterministic.cuh`
- `cub/cub/device/dispatch/tuning/tuning_rle_non_trivial_runs.cuh`
- `cub/cub/device/dispatch/tuning/tuning_scan.cuh`
- `cub/cub/device/dispatch/tuning/tuning_scan_by_key.cuh`
- `cub/cub/device/dispatch/tuning/tuning_segmented_reduce.cuh`
- `cub/cub/device/dispatch/tuning/tuning_segmented_scan.cuh`
- `cub/cub/device/dispatch/tuning/tuning_segmented_sort.cuh`
- `cub/cub/device/dispatch/tuning/tuning_select_if.cuh`
- `cub/cub/device/dispatch/tuning/tuning_three_way_partition.cuh`
- `cub/cub/device/dispatch/tuning/tuning_topk.cuh`
- `cub/cub/device/dispatch/tuning/tuning_transform.cuh`
- `cub/cub/device/dispatch/tuning/tuning_unique_by_key.cuh`
- `cub/cub/util_arch.cuh`
- `cub/cub/util_device.cuh`
- `cub/cub/warp/warp_exchange.cuh`

## Evidence Bundle

`evidence/pull-bundles/cccl-cub/gh-8836`
