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;