From d7930015619fc9f3d95576ad67a4be11554010bf Mon Sep 17 00:00:00 2001
From: foreman
Date: Tue, 20 Sep 2016 01:52:18 -0400
Subject: [PATCH] P4 to Git Change 1316221 by scharupa@scharupa_temp on
2016/09/20 01:44:43
SWDEV-96479 - bug fix, exposing atomics capabilities based on GFX IP. For Hawaii the atomics is not supported hence disabled.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#17 edit
---
rocclr/runtime/device/rocm/rocdevice.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/rocclr/runtime/device/rocm/rocdevice.cpp b/rocclr/runtime/device/rocm/rocdevice.cpp
index 539721cb31..51285f6a05 100644
--- a/rocclr/runtime/device/rocm/rocdevice.cpp
+++ b/rocclr/runtime/device/rocm/rocdevice.cpp
@@ -800,7 +800,10 @@ Device::populateOCLDeviceConstants()
info_.nativeVectorWidthLong_ = info_.preferredVectorWidthLong_ = 1;
info_.nativeVectorWidthFloat_ = info_.preferredVectorWidthFloat_ = 1;
- info_.hostUnifiedMemory_ = CL_TRUE;
+ if (agent_profile_ == HSA_PROFILE_FULL) { // full-profile = participating in coherent memory,
+ // base-profile = NUMA based non-coherent memory
+ info_.hostUnifiedMemory_ = CL_TRUE;
+ }
info_.memBaseAddrAlign_ = 8 * (flagIsDefault(MEMOBJ_BASE_ADDR_ALIGN) ?
sizeof(cl_long16) : MEMOBJ_BASE_ADDR_ALIGN);
info_.minDataTypeAlignSize_ = sizeof(cl_long16);
@@ -961,9 +964,12 @@ Device::populateOCLDeviceConstants()
info_.svmCapabilities_ |= CL_DEVICE_SVM_FINE_GRAIN_BUFFER;
// Report fine-grain system only on full profile
if (agent_profile_ == HSA_PROFILE_FULL) {
- info_.svmCapabilities_ |= CL_DEVICE_SVM_FINE_GRAIN_SYSTEM;
+ info_.svmCapabilities_ |= CL_DEVICE_SVM_FINE_GRAIN_SYSTEM;
+ }
+ // Report atomics capability based on GFX IP, control on Hawaii
+ if (info_.hostUnifiedMemory_ || deviceInfo_.gfxipVersion_ >= 800) {
+ info_.svmCapabilities_ |= CL_DEVICE_SVM_ATOMICS;
}
- info_.svmCapabilities_ |= CL_DEVICE_SVM_ATOMICS;
}
return true;