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