[FEA]: Implement C++26 parallel ranges algorithms (P3179R9)
- Dominant language
- C++
- Stars
- 2.5k
- Forks
- 486
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 295
Description
### Is this a duplicate?
- [x] I confirmed there appear to be no [duplicate issues](https://github.com/NVIDIA/cccl/issues) for this request and that I agree to the [Code of Conduct](CODE_OF_CONDUCT.md)
### Area
libcu++
### Is your feature request related to a problem? Please describe.
P3179R9 (parallel ranges algorithms) was voted into the C++ Working Draft for C++26 last week. This includes most algorithms except for the `` algorithms (e.g., `*reduce` and `*scan`). It would be excellent to have an implementation that runs in parallel on the GPU, much like our existing C++17 parallel algorithms.
This depends on https://github.com/NVIDIA/cccl/issues/1184 . Many of the parallel versions of the ranges algorithms have a different interface and different constraints on the ranges. For example, the output range is always a range parameter, not a single iterator parameter, and output ranges are always sized. Some algorithms return different iterators, too (e.g., `reverse_copy` and `rotate_copy`).
### Describe the solution you'd like
Add P3179's parallel ranges algorithms to libcu++.
### Describe alternatives you've considered
P3179 explains why we need this.
### Additional context
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.