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); }