SWDEV-548770 - Added system scope acquire for all packets in gfx12 (#966)
Tento commit je obsažen v:
@@ -1431,24 +1431,32 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative,
|
||||
profiling_ = profiling;
|
||||
cooperative_ = cooperative;
|
||||
|
||||
constexpr uint16_t kernelDispatchHBits =
|
||||
(HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE);
|
||||
constexpr uint16_t barrierHBits = (1 << HSA_PACKET_HEADER_BARRIER);
|
||||
constexpr uint16_t agentScopeHBits =
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
constexpr uint16_t systemScopeHBits =
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
// acquire=SYSTEM, release=AGENT (needed for GFX12)
|
||||
constexpr uint16_t sysAcquireAgentReleaseHBits =
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
|
||||
if (device.settings().fenceScopeAgent_) {
|
||||
const auto& isa = device.isa();
|
||||
const bool isGfx12 = (isa.versionMajor() == 12) && (isa.versionMinor() == 0) &&
|
||||
(isa.versionStepping() == 0 || isa.versionStepping() == 1);
|
||||
|
||||
dispatchPacketHeaderNoSync_ =
|
||||
(HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
dispatchPacketHeader_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) |
|
||||
(1 << HSA_PACKET_HEADER_BARRIER) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
(kernelDispatchHBits | (isGfx12 ? sysAcquireAgentReleaseHBits : agentScopeHBits));
|
||||
dispatchPacketHeader_ = (kernelDispatchHBits | barrierHBits |
|
||||
(isGfx12 ? sysAcquireAgentReleaseHBits : agentScopeHBits));
|
||||
} else {
|
||||
dispatchPacketHeaderNoSync_ =
|
||||
(HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) |
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
dispatchPacketHeader_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) |
|
||||
(1 << HSA_PACKET_HEADER_BARRIER) |
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) |
|
||||
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE);
|
||||
dispatchPacketHeaderNoSync_ = (kernelDispatchHBits | systemScopeHBits);
|
||||
dispatchPacketHeader_ = (kernelDispatchHBits | barrierHBits | systemScopeHBits);
|
||||
}
|
||||
|
||||
aqlHeader_ = dispatchPacketHeader_;
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele