From a99daf43d0e906b2d95bb9b4dfec8d53923af18c Mon Sep 17 00:00:00 2001
From: foreman
Date: Tue, 21 Aug 2018 13:52:31 -0400
Subject: [PATCH] P4 to Git Change 1596446 by axie@axie_win_opencl_laptop on
2018/08/21 13:40:43
SWDEV-161959 - [ROCm QA][RAVEN] QCDGPU-S test is having ERROR -61: (clCreateKernel failed) on RAVEN
SWDEV-161983 - [ROCm QA][RAVEN] Cachebench test is failing with CL_INVALID_BUFFER_SIZE issue
SWDEV-161978 - [ROCm QA][RAVEN] PCIeBW is failing on -with error : 61, OpenCL error creating buffer !
SWDEV-161962 - [ROCm QA][RAVEN] rodinia->nw test has ERROR: clCreateBuffer input_item_set (size:67125249) => -61
- Adjust Global memory size as half of the system physical memory size in APU for Rocm
- Similar to current DGPU calculation, environment GPU_SINGLE_ALLOC_PERCENT can be used to adjust max memory allocation size.
ReviewBoardURL = http://ocltc.amd.com/reviews/r/15659/
Tests:
1. ocltst -m oclruntime.so -A oclruntime.exclude - PASS except SVM test (non regression)
2. TeamCity presubmission test (OpenCL) - PASS
http://ocltc.amd.com:8111/viewModification.html?modId=106628&personal=true&init=1&tab=vcsModificationBuilds
3. Run test qcdgpu-s.sh : PASS
4. Run test cachebench-ocl : PASS
5. Run test PCIeBandwidth -c 0 -g 0 : PASS
6. Run test Rodinia/opencl/nw/run : PASS
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#97 edit
[ROCm/clr commit: f84d1d2d0340ee3c5c6f0facf17b606519ee0459]
---
projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp
index b578171c04..0baad36ad4 100644
--- a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp
+++ b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp
@@ -960,9 +960,11 @@ bool Device::populateOCLDeviceConstants() {
assert(alloc_granularity_ > 0);
} else {
- static const cl_ulong kDefaultGlobalMemSize = cl_ulong(1 * Gi);
- info_.globalMemSize_ = kDefaultGlobalMemSize;
- info_.maxMemAllocSize_ = info_.globalMemSize_ / 4;
+ // We suppose half of physical memory can be used by GPU in APU system
+ info_.globalMemSize_ =
+ cl_ulong(sysconf(_SC_PAGESIZE)) * cl_ulong(sysconf(_SC_PHYS_PAGES)) / 2;
+ info_.maxMemAllocSize_ =
+ cl_ulong(info_.globalMemSize_ * std::min(GPU_SINGLE_ALLOC_PERCENT, 100u) / 100u);
if (HSA_STATUS_SUCCESS !=
hsa_amd_memory_pool_get_info(