From 9049f11ef4bcc99622d8eef354fcb0dc2a940437 Mon Sep 17 00:00:00 2001 From: foreman Date: Thu, 22 Jan 2015 15:39:37 -0500 Subject: [PATCH] P4 to Git Change 1114365 by gandryey@gera-dev-w7 on 2015/01/22 15:12:44 EPR #410560 - Forum: [169727] Bug? CL_MEM_COPY_HOST_PTR is not thread safe - Ignore the transfer queue on memory release, since it releases resources after every operation Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#201 edit --- rocclr/runtime/device/gpu/gpuresource.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rocclr/runtime/device/gpu/gpuresource.cpp b/rocclr/runtime/device/gpu/gpuresource.cpp index cf776edff9..6be932a55c 100644 --- a/rocclr/runtime/device/gpu/gpuresource.cpp +++ b/rocclr/runtime/device/gpu/gpuresource.cpp @@ -1065,7 +1065,11 @@ Resource::free() if (gslResource() != 0) { // Release all virtual memory objects on all virtual GPUs for (uint idx = 0; idx < dev().vgpus().size(); ++idx) { - dev().vgpus()[idx]->releaseMemory(gslResource(), wait); + // Ignore the transfer queue, + // since it releases resources after every operation + if (dev().vgpus()[idx] != dev().xferQueue()) { + dev().vgpus()[idx]->releaseMemory(gslResource(), wait); + } } //! @note: This is a workaround for bad applications that @@ -1088,7 +1092,11 @@ Resource::free() if (gslResource() != 0) { // Release all virtual memory objects on all virtual GPUs for (uint idx = 0; idx < dev().vgpus().size(); ++idx) { - dev().vgpus()[idx]->releaseMemory(gslResource()); + // Ignore the transfer queue, + // since it releases resources after every operation + if (dev().vgpus()[idx] != dev().xferQueue()) { + dev().vgpus()[idx]->releaseMemory(gslResource()); + } } gslFree(); }