NVIDIA / NVIDIA/cccl

Track future deprecations and breaking changes for CCCL 4.0

Open
#3,701 0 comments 0 reactions 1 assignee Claimed by @bernhardmgruber View on GitHub
breaking
Dominant language
C++
Stars
2.5k
Forks
486
Avg merge
2d 6h
Merged PRs (30d)
295

Description

This issue tracks entities in CCCL that we want to deprecate in the future. Those should be addressed during the CCCL 3.x cycle, with removal at a later stage. Feel free to add items to this list.

**General**

- [ ] Any API retuning an error code should be `[[nodiscard]]`
- [ ] Enable `performance-unecessary-value-param` (https://github.com/NVIDIA/cccl/pull/8305)
- Is not useful on device, but we should consider enabling it in some form for host-only API.
- [ ] Enable `performance-enum-size` (https://github.com/NVIDIA/cccl/pull/8304)
- Enum underlying types are considered a public API.
- [ ] Enable `modernize-use-nodiscard` (https://github.com/NVIDIA/cccl/pull/8452)
- `[[nodiscard]` is a breaking change, even if it is breaking users that use the API in incorrect ways.
- [ ] Enable `modernize-use-integer-sign-comparison` (https://github.com/NVIDIA/cccl/pull/8449)
- CUB should probably have several of its compile-time constants be made unsigned to silence a lot of these warnings. This will require some performance analysis.
- [ ] Enable `bugprone-argument-comment` (https://github.com/NVIDIA/cccl/pull/9529)
- This is nice to have for all those magic `nullptr` and integer literal arguments. But it causes churn when arguments are renamed as it now affects all callers.

**CUB**:

- [x] #4165
- [ ] `WarpReduce` should use/return accumulator type
- [ ] `WarpReduce` drop edge cases (to discuss), e.g. dynamic num. items with multiple logical warps
- [ ] Drop `CUB_RUNTIME_FUNCTION` and replace it by `_CCCL_CDP_API`. Drop `CUB_DISABLE_CDP` and `CUB_RDC_ENABLED`
- [ ] Consider replacing `cub::DeviceScan::InclusiveScanInit` by a new overload of `InclusiveScan`. We didn't do this initially to not break any users of the other overloads and to not add the initial value after the stream at the end.
- [ ] #7466
- [ ] #6609
- [ ] Move non-public headers and directories to `cub/detail`, for example `cub/device/dispatch/kernel` and `cub/device/dispatch/tuning`.
- [ ] Refactor `cub::ThreadLoad` and `cub::ThreadStore` to a single public entry-point
- [ ] Drop `cub::AlignBytes`
- [ ] Drop `cub::KeyValuePair` (replace by `cuda::std::pair`)
- [ ] `DeviceRedice::ArgMin|Max` for empty problems should no longer write the max/lowest `T` to the output. The index suffices.
- [ ] Make all CUB APIs temporarily switch to the stream's device during execution, so CUB API calls where the passed stream's device does not match the current device would become well defined.
- [ ] Remove `CCCL_DISABLE_WARPSPEED_SCAN`
- [ ] Refactor vsmem utilities to better fit the design of policy selectors
- [ ] Drop `CachingAllocator`

**Thrust**:

- [ ] #3862
- [ ] #34
- [ ] #3993
- [ ] #5837
- [ ] #6637
- [ ] `thrust::[make_][integer|index]_sequence` in favor of libcu++
- [ ] Maybe the entire error code framework `thrust/thrust/system/detail/error_*`
- [ ] Maybe `thrust::system::cuda::errc`
- [ ] `thrust::mr::validator` (move to detail)
- [ ] `thrust/detail/preprocessor.h` and `THRUST_PP*` macros
- [ ] `thrust::tuple_for_each`
- [ ] parts of thrust `memory_algorithms.h`
- [ ] thrust `event_error.h`
- [ ] `thrust::has_difference_type` in `advance.inl` (move to detail)
- [ ] Review and deprecate macros from `thrust/thrust/system/cuda/config.h`
- [ ] Remove `thrust::raw_pointer_cast` (was replaced by `cuda::std::to_address`)
- [ ] Remove `thrust::counting_iterator` in favor of `cuda::counting_iterator`
- [ ] Remove `thrust::constant_iterator` in favor of `cuda::constant_iterator`
- [ ] Remove `thrust::strided_iterator` in favor of `cuda::strided_iterator`
- [ ] Remove `thrust::tabulate_output_iterator` in favor of `cuda::tabulate_output_iterator`
- [ ] Replace `thrust::discard_iterator` with `cuda::discard_iterator` (https://github.com/NVIDIA/cccl/pull/8276)
- `thrust::discard_iterator` has a non-void `value_type`, while `cuda::discard_iterator` has `void`. This can break users that use them in zip iterators and doesn't play well with CUB.
- [ ] Switch `thrust::minmax_element` to return last maximum, fixes #762 and #699
- [ ] Point `thrust::complex` at libcu++: #3507

**libcu++**

- [ ] #3477
- [ ] Remove ``, deprecated in #5672
- [ ] Remove ``, deprecated in #6266
- [ ] Resurrect #6225
- [ ] Remove `compute_capability::major()` and `compute_capability::minor()`, deprecated in #7118
- [ ] `= delete` operators `<`, `<=`, `>` and `>=` for `cuda::arch_id`, deprecated in #7655
- [ ] Turn `cuda::barrier`'s `arrival_token` from an `int64` to a class type that is only movable.
- [ ] #283

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.