From d58efdd1a8010a476c93af22d38541c03b712c4d Mon Sep 17 00:00:00 2001 From: Sarbojit Sarkar Date: Fri, 4 Mar 2022 10:34:42 +0000 Subject: [PATCH] SWDEV-325708 - Query for FineGrained support Change-Id: Idd20a71467595ab6577bf47c081c437a4b166988 [ROCm/clr commit: 3c2dc1f64698b9bda6b7185ec50ab581ec2088d5] --- projects/clr/rocclr/device/device.hpp | 3 +++ projects/clr/rocclr/device/rocm/rocdevice.cpp | 9 +++++++++ projects/clr/rocclr/device/rocm/rocdevice.hpp | 1 + 3 files changed, 13 insertions(+) diff --git a/projects/clr/rocclr/device/device.hpp b/projects/clr/rocclr/device/device.hpp index adb2aaf7d3..71721689eb 100644 --- a/projects/clr/rocclr/device/device.hpp +++ b/projects/clr/rocclr/device/device.hpp @@ -1751,6 +1751,9 @@ class Device : public RuntimeObject { virtual const uint32_t getPreferredNumaNode() const { return 0; } virtual void ReleaseGlobalSignal(void* signal) const {} + virtual const bool isFineGrainSupported() const { + return (info().svmCapabilities_ & CL_DEVICE_SVM_ATOMICS) != 0 ? true : false; + } //! Returns TRUE if the device is available for computations bool isOnline() const { return online_; } diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp index 31336e9447..5591ef9d32 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -1064,6 +1064,15 @@ Memory* Device::getGpuMemory(amd::Memory* mem) const { return static_cast(mem->getDeviceMemory(*this)); } +const bool Device::isFineGrainSupported() const { + bool result = (info().svmCapabilities_ & CL_DEVICE_SVM_ATOMICS) != 0 ? true : false; + if (result) { + if (gpu_fine_grained_segment_.handle != 0) { + return true; + } + } + return false; +} // ================================================================================================ bool Device::populateOCLDeviceConstants() { info_.available_ = true; diff --git a/projects/clr/rocclr/device/rocm/rocdevice.hpp b/projects/clr/rocclr/device/rocm/rocdevice.hpp index 07e461ab13..cbaa952ee7 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.hpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.hpp @@ -540,6 +540,7 @@ class Device : public NullDevice { virtual amd::Memory* GetArenaMemObj(const void* ptr, size_t& offset); const uint32_t getPreferredNumaNode() const { return preferred_numa_node_; } + const bool isFineGrainSupported() const; private: bool create();