From ca9d490be8b427e04fd9f3e94c3a2442c7eac1c1 Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 6 Feb 2015 16:56:12 -0500 Subject: [PATCH] P4 to Git Change 1119692 by xcui@merged_opencl_jxcwin on 2015/02/06 16:20:16 EPR #413091 - created backing store in the maptarget and move the commit SVM memory funciton into alloMaptarget function. Added sync funtion in map so that it can handle mGPU cases. Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_svm.cpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#116 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#205 edit [ROCm/clr commit: 12a7fe0d712510a4dac247549f8bff58de1720b7] --- .../rocclr/runtime/device/gpu/gpumemory.cpp | 18 +++++++++++++++++- .../rocclr/runtime/device/gpu/gpuresource.cpp | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/projects/clr/rocclr/runtime/device/gpu/gpumemory.cpp b/projects/clr/rocclr/runtime/device/gpu/gpumemory.cpp index e9a4590329..e59e63b0b7 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpumemory.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpumemory.cpp @@ -923,6 +923,22 @@ Memory::allocMapTarget( size_t offset = origin[0]; incIndMapCount(); + void *initHostPtr = NULL; + bool failed = false; + + if (!owner()->getSvmPtr()) { + initHostPtr = owner()->getHostMem(); + static const bool forceAllocHostMem = true; + if (NULL == initHostPtr) { + if (!owner()->allocHostMemory(NULL, forceAllocHostMem)) { + failed = true; + } + } + } + else { + owner()->commitSvmMemory(); + initHostPtr = owner()->getSvmPtr(); + } // If host memory exists, use it if ((owner()->getHostMem() != NULL) && isDirectMap()) { @@ -954,7 +970,7 @@ Memory::allocMapTarget( amd::Memory* memory = NULL; // Search for a possible indirect resource //For SVM implementation, we cannot use cached map. if svm space, use the svm host pointer - void *initHostPtr = owner()->getSvmPtr(); + cl_mem_flags flag = 0; bool canBeCached = true; if (NULL != initHostPtr) { diff --git a/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp b/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp index a1e5db9988..d86b5e0263 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp @@ -346,7 +346,7 @@ Resource::create(MemoryType memType, CreateParams* params, bool heap) desc.vaBase = 0; desc.minAlignment = 0; desc.section = GSL_SECTION_REGULAR; - if (NULL != params && NULL != params->owner_) { //make sure params not NULL + if (NULL != params && NULL != params->owner_ && memType != Pinned) { //make sure params not NULL mcaddr svmPtr = reinterpret_cast(params->owner_->getSvmPtr()); desc.vaBase = (svmPtr == 1)? 0:svmPtr; cal_.SVMRes_ = (svmPtr != 0);