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

[BUG]: cuda::std::extents::extent does not work in constexpr context if there is at least one dynamic_extent present #522

Open
1 task done
pciolkosz opened this issue Oct 4, 2023 · 4 comments
Assignees
Labels
bug Something isn't working right.

Comments

@pciolkosz
Copy link
Contributor

Is this a duplicate?

Type of Bug

Compile-time Error

Component

libcu++

Describe the bug

It's not possible to use extents::extent in for eg. static_assert even when statically known extent is queried if extents contain at least one dynamic_extent. If all extents are statically known, then extent works in constexpr contexts.

How to Reproduce

https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIAruiakl9ZATwDKjdAGFUtEywYgATKUcAZPAZMADl3ACNMYhAADlIAB1QFQjsGFzcPPQSk2wEAoNCWCKiuS0xrHIYhAiZiAjT3Tx8rTBsUqpqCPJDwyJjLatr6jJKFAc7A7sLergBKS1QTYmR2DgBSLwBmQOQ3LABqVY2nU3MAelH0U5Z0BTjDQ%2BxVjQBBJ%2BfAgj2WJkCIGYOAOwAITeezBexOTBAIAu0MwqgIjAICkOTg%2BpD2JQhZihMII6Gh6AAnswWHhkAB9eGIwQYjYPPbwiBeGaHEEvcF7UZMWyUpgKJS1CDwgB01KREA0/0OABFZZjWRt2c9OZDobCQOLBCijujMRifHt6RtsIzVF42aDwdzeRT%2BYKCMLzWKERKpQcNnLPQrLS9VgCZRw5rROABWXieDhaUioThOOQylVOdYgrxArkLJaYA6bHikAiaINzADWIFDAE4ReWAGxecteaLVjYA2sAyQbUP6TiSCOFmOcXgKEAafOFuZwWAwRAoVAsOJ0SLkShoOcLqIMABuyGQXC8XhMJSwG/JmAAanhMAB3ADycUYfZotERxCHEDCfbCgRqRI/X%2BIROvMJtBaAtuF4Fc2EEa8GFoH8o14LAwhMYAnDEWghzA0gsG%2BIxxHgrC8GIEC8A3TAMOjeEWhMRE%2Bw%2BMo%2B1oPAwmIb8XCwPsCGIPAWE4Hg5ioAxgAUc8r1ve9MP4QQRDEdgpBkQRFBUdR8N0EoDCMFAcX0Jih0gOZUDiCoMN4VBSOILisF0v5SnKFIHAYZxXAaPR/AmAoikyRJkgEIZPBKLJvIYLp3OmGziIEdpBic4YwtaCKxmCnpin6DpfL0blakSqZijmBRM2WCRgzDXt8NjDg9mCU8nCcTEvBFOquD2CBcEIEgcw2WZeFArQZhLMsRxDDge1IHiNg2EUxsmqbpurUhI2jMrB2HUd4PHKcICQBYCDiail2FfAiAsvRJOEURxDkk7FLUPtVNIS8WLiMcuw4cM5r7Mrr2onbPlQKgKqqmrd3qkVGogFxV3oYh2s6laermBBMCYLAomswbhtG8bpqxybZvmkyB0sZbuqDUgJ2nI8Tz2ld50h4JWBWSrqtq4G8wpgqOF4TADpIPACRKE7pPO6RLqUa6VPSspws8YUHLSkpXPyJLPOyFI5fiLyKiyjyRkluLKjGNXmj1yLxkV7L0oN6K/JSzK3KV2Z8yIzBeeHIqXpKhbOBlTBj2WPYRMvSJ/qZoGGqalrDuhjFwZpoP1g6mYurHN30ZAMaJuxrG3tKgmhxHYnetIUtJA0EUNGbDQAS4DZa2bLxQ2rTtBo2D38Y52Gi2erxW/7duC7mMyknsSQgA

Expected behavior

Both static asserts from the godbolt link should compile correctly, presence of dynamic_extent should not affect the ability to query statically known extents at compile time.

Reproduction link

https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIAruiakl9ZATwDKjdAGFUtEywYgATKUcAZPAZMADl3ACNMYhAADlIAB1QFQjsGFzcPPQSk2wEAoNCWCKiuS0xrHIYhAiZiAjT3Tx8rTBsUqpqCPJDwyJjLatr6jJKFAc7A7sLergBKS1QTYmR2DgBSLwBmQOQ3LABqVY2nU3MAelH0U5Z0BTjDQ%2BxVjQBBJ%2BfAgj2WJkCIGYOAOwAITeezBexOTBAIAu0MwqgIjAICkOTg%2BpD2JQhZihMII6Gh6AAnswWHhkAB9eGIwQYjYPPbwiBeGaHEEvcF7UZMWyUpgKJS1CDwgB01KREA0/0OABFZZjWRt2c9OZDobCQOLBCijujMRifHt6RtsIzVF42aDwdzeRT%2BYKCMLzWKERKpQcNnLPQrLS9VgCZRw5rROABWXieDhaUioThOOQylVOdYgrxArkLJaYA6bHikAiaINzADWIFDAE4ReWAGxecteaLVjYA2sAyQbUP6TiSCOFmOcXgKEAafOFuZwWAwRAoVAsOJ0SLkShoOcLqIMABuyGQXC8XhMJSwG/JmAAanhMAB3ADycUYfZotERxCHEDCfbCgRqRI/X%2BIROvMJtBaAtuF4Fc2EEa8GFoH8o14LAwhMYAnDEWghzA0gsG%2BIxxHgrC8GIEC8A3TAMOjeEWhMRE%2Bw%2BMo%2B1oPAwmIb8XCwPsCGIPAWE4Hg5ioAxgAUc8r1ve9MP4QQRDEdgpBkQRFBUdR8N0EoDCMFAcX0Jih0gOZUDiCoMN4VBSOILisF0v5SnKFIHAYZxXAaPR/AmAoikyRJkgEIZPBKLJvIYLp3OmGziIEdpBic4YwtaCKxmCnpin6DpfL0blakSqZijmBRM2WCRgzDXt8NjDg9mCU8nCcTEvBFOquD2CBcEIEgcw2WZeFArQZhLMsRxDDge1IHiNg2EUxsmqbpurUhI2jMrB2HUd4PHKcICQBYCDiail2FfAiAsvRJOEURxDkk7FLUPtVNIS8WLiMcuw4cM5r7Mrr2onbPlQKgKqqmrd3qkVGogFxV3oYh2s6laermBBMCYLAomswbhtG8bpqxybZvmkyB0sZbuqDUgJ2nI8Tz2ld50h4JWBWSrqtq4G8wpgqOF4TADpIPACRKE7pPO6RLqUa6VPSspws8YUHLSkpXPyJLPOyFI5fiLyKiyjyRkluLKjGNXmj1yLxkV7L0oN6K/JSzK3KV2Z8yIzBeeHIqXpKhbOBlTBj2WPYRMvSJ/qZoGGqalrDuhjFwZpoP1g6mYurHN30ZAMaJuxrG3tKgmhxHYnetIUtJA0EUNGbDQAS4DZa2bLxQ2rTtBo2D38Y52Gi2erxW/7duC7mMyknsSQgA

Operating System

N/A

nvidia-smi output

N/A

NVCC version

12.2.1

@pciolkosz pciolkosz added the bug Something isn't working right. label Oct 4, 2023
@github-actions github-actions bot added the needs triage Issues that require the team's attention label Oct 4, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Oct 4, 2023

Hi @pciolkosz!

Thanks for submitting this issue - the CCCL team has been notified and we'll get back to you as soon as we can!
In the mean time, feel free to add any relevant information to this issue.

@jrhemstad jrhemstad removed the needs triage Issues that require the team's attention label Oct 4, 2023
@jrhemstad
Copy link
Collaborator

Thanks @pciolkosz, this does indeed look wrong.

@youyu3 @miscco could you take a look?

@youyu3
Copy link
Contributor

youyu3 commented Oct 5, 2023

Looks like a bug in our implementation. The kokkos reference implementation looks okay (https://godbolt.org/z/obWK5dYT3).

I'll take a look.

@youyu3
Copy link
Contributor

youyu3 commented Oct 8, 2023

Looks to me that the kokkos reference implementation works for this case because it's extents.hpp was completely rewritten (kokkos/mdspan@08a38f). I think the easiest way to fix this is to sync it up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working right.
Projects
Status: Todo
Development

No branches or pull requests

4 participants