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

Possible incorrect sorting on Wave Size 128 #3

Closed
b0nes164 opened this issue Apr 21, 2024 · 10 comments
Closed

Possible incorrect sorting on Wave Size 128 #3

b0nes164 opened this issue Apr 21, 2024 · 10 comments
Labels
bug Something isn't working D3D12

Comments

@b0nes164
Copy link
Owner

See aras-p/UnityGaussianSplatting#112

@b0nes164 b0nes164 added bug Something isn't working D3D12 labels Apr 21, 2024
@b0nes164 b0nes164 changed the title Incorrect sorting on Wave Size 128 Possible incorrect sorting on Wave Size 128 Apr 21, 2024
@alasin
Copy link

alasin commented Apr 22, 2024

Possibly 64 as well as Qualcomm Adreno GPUs have a default subgroup size of 64.

@b0nes164
Copy link
Owner Author

As stated on the README, I have tested on wave size 64.

@alasin
Copy link

alasin commented Apr 23, 2024

Was it on an AMD GPU? Or Qualcomm Adreno?

@b0nes164
Copy link
Owner Author

Tested on a 7900 XT with wave size locked to 64 using [WaveSize(<numLanes>)]. That being said, I have an Adreno 618 on the way, so I will be able to debug it then.

@b0nes164
Copy link
Owner Author

b0nes164 commented Apr 29, 2024

Welp thats extremely dissapointing.
Debug

I will have to get another device, problem is that I can't readily find information on which Qualcomm devices support WaveIntrinsics. The best I can find is this. I also don't have the resources at the moment to go out and buy a laptop just to test my code on. So for now this will have to be on hold.

@alasin
Copy link

alasin commented Apr 30, 2024

I usually use gpuinfo to check subgroup support in Vulkan for Qualcomm devices. Subgroup ops correspond one-to-one to wave ops in most cases. I also have a Quest 3 for which subgroup size is 64 (not sure if it can be changed to 128). If you need help in testing, I'd be happy to help debug.

@b0nes164
Copy link
Owner Author

b0nes164 commented May 1, 2024

I usually use gpuinfo to check subgroup support in Vulkan for Qualcomm devices.

I totally forgot about that Vulkan has its own data base. In fact, if I remember correctly, the D3D12 one is a fork/based off of the Vulkan one.

I also have a Quest 3 for which subgroup size is 64 (not sure if it can be changed to 128). If you need help in testing, I'd be happy to help debug.

Do you know if it is possible to run this implementation on a Windows PC, using the Quest 3's Qualcomm chip as the device? The problem is that the D3D12 implementation probably will not run natively on the Quest 3. I've been meaning to make a Vulkan implementation, which shouldn't be too bad (DXC can compile to SPIR-V, so I would precompile the shaders from HLSL), but I just haven't had the time.

However, a user from another repo also has a Quest 3, and has offered to run tests for me, but in Unity. I believe that's the most straightforward course of action, because Unity handles the transpilation from HLSL to SPIR-V and can use Vulkan as the backend to run on Quest.

I very much appreciate the help though.

@alasin
Copy link

alasin commented May 2, 2024

Do you know if it is possible to run this implementation on a Windows PC, using the Quest 3's Qualcomm chip as the device?

I doubt it, or at least I haven't seen it done before. It should be possible through Unity though. Looks like you're already on top of it!

@LeeSYSU
Copy link

LeeSYSU commented Aug 20, 2024

You can try change waveFlags &= t ? ballot : ~ballot; to waveFlags &= (t ? ballot : (~ballot)); in function WarpLevelMultiSplitWGE16, this can show small Gaussian Spaltting model. @b0nes164

@b0nes164
Copy link
Owner Author

Closing this issue, as I have confirmed the bug does not have to do with the wave size. @LeeSYSU, copying your comment to #4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working D3D12
Projects
None yet
Development

No branches or pull requests

3 participants