[EPIC] Thrust large input support
- Dominant language
- C++
- Stars
- 2.5k
- Forks
- 486
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 295
Description
As a higher-level interface, Thrust should provide behavior that is safe by default. This means every Thrust algorithm should work with large inputs with no user intervention required.
This will likely involve querying the extent of the input range and dynamically dispatching to a code path that uses a 4B or 8B offset type.
The dynamic dispatch will require always instantiating at least two code paths for a 4B and 8B offset type. This will increase compile time, and therefore we should provide users with a means to explicitly choose an offset type.
We should consider enabling users to configure the offset type at a global scope (e.g., through a preprocessor definition) as well as at a per-algorithm scope. For per-algorithm specification, a likely solution is to allow controlling the offset type via the execution policy, e.g., by adding a `offset_type` member type definition.
- [ ] https://github.com/NVIDIA/cccl/issues/1958
- [ ] Identify Thrust algorithms that do/do not supprt large inputs
- [ ] Determine and finalize design for large input support in Thrust
Existing Thrust issues:
- https://github.com/NVIDIA/cccl/issues/744
- https://github.com/NVIDIA/cccl/issues/766
- https://github.com/NVIDIA/cccl/issues/747
Contributor guide
Assessment
This issue has not been assessed yet.