From 3d384e641247090215cfe97f28af31bc8f362b3a Mon Sep 17 00:00:00 2001
From: foreman
Date: Wed, 24 Aug 2016 17:50:16 -0400
Subject: [PATCH] P4 to Git Change 1306787 by
skudchad@skudchad_test_win_opencl2 on 2016/08/24 17:43:49
SWDEV-94442 - [IQE] [EllesmereGL] [Win10 TH2] GPU2GPU ocltst causes hard hang intermittently
- Add gpu events for marker wait in runtime
ReviewBoardURL = http://ocltc.amd.com/reviews/r/11174/diff/
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#405 edit
---
rocclr/runtime/device/gpu/gpuvirtual.cpp | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/rocclr/runtime/device/gpu/gpuvirtual.cpp b/rocclr/runtime/device/gpu/gpuvirtual.cpp
index 1e94a32382..dc9f0076a8 100644
--- a/rocclr/runtime/device/gpu/gpuvirtual.cpp
+++ b/rocclr/runtime/device/gpu/gpuvirtual.cpp
@@ -2624,6 +2624,8 @@ VirtualGPU::submitSignal(amd::SignalCommand & vcmd)
amd::ScopedLock lock(execution());
profilingBegin(vcmd);
gpu::Memory* gpuMemory = dev().getGpuMemory(&vcmd.memory());
+ GpuEvent gpuEvent;
+ eventBegin(MainEngine);
if (vcmd.type() == CL_COMMAND_WAIT_SIGNAL_AMD) {
uint64_t surfAddr = gpuMemory->gslResource()->getPhysicalAddress(cs());
uint64_t markerAddr = gpuMemory->gslResource()->getMarkerAddress(cs());
@@ -2632,14 +2634,13 @@ VirtualGPU::submitSignal(amd::SignalCommand & vcmd)
markerOffset, false);
}
else if (vcmd.type() == CL_COMMAND_WRITE_SIGNAL_AMD) {
- GpuEvent gpuEvent;
- eventBegin(MainEngine);
cs()->p2pMarkerOp(gpuMemory->gslResource(), vcmd.markerValue(), vcmd.markerOffset(), true);
- eventEnd(MainEngine, gpuEvent);
- gpuMemory->setBusy(*this, gpuEvent);
- // Update the global GPU event
- setGpuEvent(gpuEvent);
}
+ eventEnd(MainEngine, gpuEvent);
+ gpuMemory->setBusy(*this, gpuEvent);
+ // Update the global GPU event
+ setGpuEvent(gpuEvent);
+
profilingEnd(vcmd);
}