Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEA]: Make Thrust types have a consistent ABI between host and device code #1262

Closed
1 task
jrhemstad opened this issue Jan 10, 2024 · 2 comments
Closed
1 task
Assignees
Labels
2.3.2 Targeted for 2.3.2 patch release feature request New feature or request.

Comments

@jrhemstad
Copy link
Collaborator

jrhemstad commented Jan 10, 2024

Is this a duplicate?

Area

Thrust

Is your feature request related to a problem? Please describe.

Thrust uses an inline namespace that embeds the CUDA architectures to avoid symbol collision issues. However, this causes problems where you can't pass Thrust types compiled in a host-only TU with a device TU.

Describe the solution you'd like

Remove types like optional, pair, etc. from the inline namespace.

Tasks

Preview Give feedback

Describe alternatives you've considered

No response

Additional context

No response

@jrhemstad
Copy link
Collaborator Author

@robertmaynard @bdice could one or both of you help us with finalizing the list of types that RAPIDS depends on this functionality?

@jrhemstad jrhemstad changed the title [FEA]: Make Thrust types have a stable ABI between host and device code [FEA]: Make Thrust types have a consistent ABI between host and device code Jan 17, 2024
miscco added a commit to miscco/cccl that referenced this issue Feb 8, 2024
We have issues with the internal versioning of thrust types that may end up in a public API.

As we utilize cuda architectures for an internal namespace etc those types turn out to be different between host and device TUs.

Therefore, put types inte a plain unversioned namespace

Addresses NVIDIA#1262
miscco added a commit to miscco/cccl that referenced this issue Feb 8, 2024
We have issues with the internal versioning of thrust types that may end up in a public API.

As we utilize cuda architectures for an internal namespace etc those types turn out to be different between host and device TUs.

Therefore, put types inte a plain unversioned namespace

Addresses NVIDIA#1262
miscco added a commit to miscco/cccl that referenced this issue Feb 8, 2024
We have issues with the internal versioning of thrust types that may end up in a public API.

As we utilize cuda architectures for an internal namespace etc those types turn out to be different between host and device TUs.

Therefore, put types inte a plain unversioned namespace

Addresses NVIDIA#1262
@miscco
Copy link
Collaborator

miscco commented Feb 14, 2024

We decided that this will not be feasible rather than that we want to work with upstream to not use thrust types in API interfaces when not necessary

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.3.2 Targeted for 2.3.2 patch release feature request New feature or request.
Projects
Archived in project
Development

No branches or pull requests

2 participants