gpuav: Support coopmat in shared memory data race pass.#11780
gpuav: Support coopmat in shared memory data race pass.#11780spencer-lunarg merged 4 commits intoKhronosGroup:mainfrom
Conversation
|
CI Vulkan-ValidationLayers build queued with queue ID 666500. |
76aed02 to
1715307
Compare
|
CI Vulkan-ValidationLayers build queued with queue ID 666513. |
|
CI Vulkan-ValidationLayers build # 22645 running. |
|
CI Vulkan-ValidationLayers build queued with queue ID 666602. |
|
CI Vulkan-ValidationLayers build # 22647 running. |
|
CI Vulkan-ValidationLayers build # 22647 failed. |
|
CI Vulkan-ValidationLayers build queued with queue ID 666699. |
|
CI Vulkan-ValidationLayers build # 22648 running. |
| if ((ret & (STORE_BIT | ATOMIC_BIT)) != 0) { | ||
| error_payload = ErrorPayload( | ||
| inst_offset, | ||
| SpecConstantLinkShaderId | (kErrorGroup_SharedMemoryDataRace << kErrorGroup_Shift) | (kErrorSubCode_SharedMemoryDataRace_RaceOnLoad << kErrorSubCode_Shift), |
There was a problem hiding this comment.
happy to do in a follow up PR, but I think this should be a different error message to print it more clearly the error didn't have from a load, but a coop-load
There was a problem hiding this comment.
The message will have the OpCooperativeMatrixLoadKHR opcode in it, so it's fairly clear.
| return false; | ||
| } | ||
|
|
||
| // relies on some subgroup functionality |
There was a problem hiding this comment.
... I don't think we need this, if the user doesn't have coop-mat, it will not link in any subgroup sutff
also SPV_KHR_cooperative_matrix relies on SPIR-V 1.3, so you couldn't have a coop-mat without out anyway
There was a problem hiding this comment.
I did this to fix PositiveGpuAVBufferDeviceAddress.AtomicsWorkgroups which was failing in the previous CI run. Now that the sharedmemdatarace shader uses subgroup stuff, the inputs like SubgroupId get linked in, but the groupnonuniform capability is removed here:
// Vulkan 1.1 is required, so if incoming SPIR-V is 1.0, might need to adjust it
const uint32_t spirv_version_1_0 = 0x00010000;
if (header_.version == spirv_version_1_0) {
// SPV_KHR_storage_buffer_storage_class is needed, but glslang removes it from linking functions
AddExtension("SPV_KHR_storage_buffer_storage_class");
// Subgroups where added in Vulkan 1.1, so SPIR-V 1.0 can't use them
// This is a bad hack around for someone using a SPIR-V 1.0
RemoveCapability(spv::CapabilityGroupNonUniform);
}
It looks like the new failure is something different, so I guess this fix worked (I saw spirv-val failures, not sure how that is configured in CI)
There was a problem hiding this comment.
... I've debated to just enforce 1.3 SPIR-V.... not going to worry too much about this for now
spencer-lunarg
left a comment
There was a problem hiding this comment.
some comments/idea, but can be applied in a follow-up PR if needed
|
CI Vulkan-ValidationLayers build # 22648 failed. |
|
I can't reproduce the current CI failure locally (NegativeGpuAVSharedMemoryDataRace.CoopMatStoreLoad). Is there anything useful in the logs? |
... not sure what is going on, should have reported the not sure what is going on either... worse case, can silent it until I have access to the machine to look more |
|
I added printfs and was lucky enough to see it happen once. There can intermittently be both RaceOnStore and RaceOnLoad, and the duplicate message limit applies per-VUID. Any clever ideas what to do about this? Seems like it could affect some other tests, too. |
|
CI Vulkan-ValidationLayers build queued with queue ID 666868. |
|
I changed this and a few other tests to have a single race. This uncovered another bug, so I guess that worked out well. |
|
CI Vulkan-ValidationLayers build # 22649 running. |
|
CI Vulkan-ValidationLayers build # 22649 passed. |
No description provided.