From 6b9ede7d2611eb455c3808ab809ea8e4f6a4e615 Mon Sep 17 00:00:00 2001 From: foreman Date: Thu, 29 Aug 2019 17:35:38 -0400 Subject: [PATCH] P4 to Git Change 1991227 by cpaquot@cpaquot-ocl-lc-lnx on 2019/08/29 17:26:37 SWDEV-193938 - [HIP] Use fine grained pool for hipHostRegister Affected files ... ... //depot/stg/opencl/drivers/opencl/api/hip/hip_memory.cpp#69 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#40 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.cpp#43 edit [ROCm/clr commit: b6f298d3f0207cc164885529a3c344f37ad77434] --- projects/clr/rocclr/runtime/device/rocm/rocdevice.hpp | 4 ++++ projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/clr/rocclr/runtime/device/rocm/rocdevice.hpp b/projects/clr/rocclr/runtime/device/rocm/rocdevice.hpp index e3e0ff5c36..b63d772161 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocdevice.hpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocdevice.hpp @@ -408,6 +408,10 @@ class Device : public NullDevice { std::map& QueuePool() { return queue_pool_; } + hsa_amd_memory_pool_t SystemSegment() const { return system_segment_; } + + hsa_amd_memory_pool_t SystemCoarseSegment() const { return system_coarse_segment_; } + private: static hsa_ven_amd_loader_1_00_pfn_t amd_loader_ext_table; diff --git a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp index af6fdc9b8b..7779079c45 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp @@ -831,8 +831,9 @@ bool Buffer::create() { if (owner()->getSvmPtr() != owner()->getHostMem()) { if (memFlags & (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR)) { - hsa_status_t status = hsa_amd_memory_lock(owner()->getHostMem(), owner()->getSize(), nullptr, - 0, &deviceMemory_); + hsa_amd_memory_pool_t pool = (memFlags & CL_MEM_SVM_ATOMICS)? dev().SystemSegment() : dev().SystemCoarseSegment(); + hsa_status_t status = hsa_amd_memory_lock_to_pool(owner()->getHostMem(), owner()->getSize(), nullptr, + 0, pool, 0, &deviceMemory_); if (status != HSA_STATUS_SUCCESS) { deviceMemory_ = nullptr; }