From b0c9fb84fd415907025a8651cd604d552abc8f01 Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Mon, 23 Oct 2023 00:19:03 +0100 Subject: [PATCH] SWDEV-428408 - Add waitingSignal for hsa_amd_memory_async_copy calls in hsaCopyStaged Change-Id: I3c42ef1ef3ed2f0b00f0a50d402a32106e5978ba --- rocclr/device/rocm/rocblit.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rocclr/device/rocm/rocblit.cpp b/rocclr/device/rocm/rocblit.cpp index 598294b8ae..5d8c4f77b9 100644 --- a/rocclr/device/rocm/rocblit.cpp +++ b/rocclr/device/rocm/rocblit.cpp @@ -802,11 +802,13 @@ bool DmaBlitManager::hsaCopyStaged(const_address hostSrc, address hostDst, size_ engine = HwQueueEngine::SdmaWrite; } gpu().Barriers().SetActiveEngine(engine); + auto wait_events = gpu().Barriers().WaitingSignal(engine); hsa_signal_t active = gpu().Barriers().ActiveSignal(kInitSignalValueOne, gpu().timestamp()); memcpy(hsaBuffer, hostSrc + offset, size); - status = hsa_amd_memory_async_copy(hostDst + offset, dev().getBackendDevice(), hsaBuffer, - srcAgent, size, 0, nullptr, active); + status = hsa_amd_memory_async_copy( + hostDst + offset, dev().getBackendDevice(), hsaBuffer, srcAgent, size, + wait_events.size(), wait_events.data(), active); ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Async Copy staged H2D dst=0x%zx, src=0x%zx, size=%ld, completion_signal=0x%zx", hostDst + offset, hsaBuffer, size, active.handle); @@ -834,11 +836,13 @@ bool DmaBlitManager::hsaCopyStaged(const_address hostSrc, address hostDst, size_ engine = HwQueueEngine::SdmaRead; } gpu().Barriers().SetActiveEngine(engine); + auto wait_events = gpu().Barriers().WaitingSignal(engine); hsa_signal_t active = gpu().Barriers().ActiveSignal(kInitSignalValueOne, gpu().timestamp()); // Copy data from Device to Host - status = hsa_amd_memory_async_copy(hsaBuffer, dstAgent, hostSrc + offset, - dev().getBackendDevice(), size, 0, nullptr, active); + status = hsa_amd_memory_async_copy( + hsaBuffer, dstAgent, hostSrc + offset, dev().getBackendDevice(), size, + wait_events.size(), wait_events.data(), active); ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Async Copy staged D2H dst=0x%zx, src=0x%zx, size=%ld, completion_signal=0x%zx", hsaBuffer, hostSrc + offset, size, active.handle);