NVIDIA / NVIDIA/cccl

[EPIC] Thrust large input support

Open
#49 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

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

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.