NVIDIA / NVIDIA/cccl

[FEA]: Implement C++26 parallel ranges algorithms (P3179R9)

Open
#5,056 0 comments 0 reactions 0 assignees View on GitHub
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

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.