From f81a154c54372b809ae15c0436d3f3643614ce4e Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 14 Jun 2019 04:25:03 -0400 Subject: [PATCH] P4 to Git Change 1826060 by gandryey@gera-hip-lnx on 2019/06/13 15:40:00 SWDEV-184708 - Support hipGetDeviceProperties() - Enable coop launch properties for gfx9+ by default - GPU_ENABLE_COOP_GROUPS controls the feature Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#339 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#143 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#84 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#128 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocsettings.cpp#44 edit --- rocclr/runtime/device/device.hpp | 4 +++- rocclr/runtime/device/pal/paldevice.cpp | 5 +++-- rocclr/runtime/device/pal/palsettings.cpp | 7 +++++++ rocclr/runtime/device/rocm/rocdevice.cpp | 4 ++-- rocclr/runtime/device/rocm/rocsettings.cpp | 7 ++++++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/rocclr/runtime/device/device.hpp b/rocclr/runtime/device/device.hpp index 9e7aa6cbd0..4a5ed53157 100644 --- a/rocclr/runtime/device/device.hpp +++ b/rocclr/runtime/device/device.hpp @@ -537,7 +537,9 @@ class Settings : public amd::HeapObject { uint enableWave32Mode_ : 1; //!< Enable Wave32 mode for this device uint lcWavefrontSize64_ : 1; //!< Enable Wave64 mode for this device uint enableXNACK_ : 1; //!< Enable XNACK feature - uint reserved_ : 14; + uint enableCoopGroups_ : 1; //!< Enable cooperative groups feature + uint enableCoopMultiDeviceGroups_ : 1; //!< Enable cooperative groups multi device + uint reserved_ : 12; }; uint value_; }; diff --git a/rocclr/runtime/device/pal/paldevice.cpp b/rocclr/runtime/device/pal/paldevice.cpp index e566ffd049..01a3e1e9e0 100644 --- a/rocclr/runtime/device/pal/paldevice.cpp +++ b/rocclr/runtime/device/pal/paldevice.cpp @@ -660,8 +660,9 @@ void NullDevice::fillDeviceInfo(const Pal::DeviceProperties& palProp, info_.pcieRevisionId_ = palProp.revisionId; info_.maxThreadsPerCU_ = info_.wavefrontWidth_ * info_.simdPerCU_ * palProp.gfxipProperties.shaderCore.numWavefrontsPerSimd; - info_.cooperativeGroups_ = GPU_ENABLE_COOP_GROUPS; - info_.cooperativeMultiDeviceGroups_ = GPU_ENABLE_COOP_GROUPS; + + info_.cooperativeGroups_ = settings().enableCoopGroups_; + info_.cooperativeMultiDeviceGroups_ = settings().enableCoopMultiDeviceGroups_; } } diff --git a/rocclr/runtime/device/pal/palsettings.cpp b/rocclr/runtime/device/pal/palsettings.cpp index 23241de5c7..0ae8bfde0d 100644 --- a/rocclr/runtime/device/pal/palsettings.cpp +++ b/rocclr/runtime/device/pal/palsettings.cpp @@ -223,6 +223,8 @@ bool Settings::create(const Pal::DeviceProperties& palProp, case Pal::AsicRevision::Raven: case Pal::AsicRevision::Raven2: aiPlus_ = true; + enableCoopGroups_ = true; + enableCoopMultiDeviceGroups_ = true; // Fall through to VI ... case Pal::AsicRevision::Carrizo: case Pal::AsicRevision::Bristol: @@ -540,6 +542,11 @@ void Settings::override() { if (!flagIsDefault(GPU_MAX_COMMAND_BUFFERS)) { maxCmdBuffers_ = GPU_MAX_COMMAND_BUFFERS; } + + if (!flagIsDefault(GPU_ENABLE_COOP_GROUPS)) { + enableCoopGroups_ = GPU_ENABLE_COOP_GROUPS; + enableCoopMultiDeviceGroups_ = GPU_ENABLE_COOP_GROUPS; + } } } // namespace pal diff --git a/rocclr/runtime/device/rocm/rocdevice.cpp b/rocclr/runtime/device/rocm/rocdevice.cpp index 6609d3d5ba..6412397b17 100644 --- a/rocclr/runtime/device/rocm/rocdevice.cpp +++ b/rocclr/runtime/device/rocm/rocdevice.cpp @@ -1376,8 +1376,8 @@ bool Device::populateOCLDeviceConstants() { //TODO: set to true once thread trace support is available info_.threadTraceEnable_ = false; info_.pcieDeviceId_ = deviceInfo_.pciDeviceId_; - info_.cooperativeGroups_ = GPU_ENABLE_COOP_GROUPS; - info_.cooperativeMultiDeviceGroups_ = GPU_ENABLE_COOP_GROUPS; + info_.cooperativeGroups_ = settings().enableCoopGroups_; + info_.cooperativeMultiDeviceGroups_ = settings().enableCoopMultiDeviceGroups_; } info_.maxPipePacketSize_ = info_.maxMemAllocSize_; diff --git a/rocclr/runtime/device/rocm/rocsettings.cpp b/rocclr/runtime/device/rocm/rocsettings.cpp index 1b150c4997..0bf90d044c 100644 --- a/rocclr/runtime/device/rocm/rocsettings.cpp +++ b/rocclr/runtime/device/rocm/rocsettings.cpp @@ -117,6 +117,8 @@ bool Settings::create(bool fullProfile, int gfxipVersion) { // enable subnormals for gfx900 and later if (gfxipVersion >= 900) { singleFpDenorm_ = true; + enableCoopGroups_ = true; + enableCoopMultiDeviceGroups_ = true; } } else { // Also enable AMD double precision extension? @@ -180,8 +182,11 @@ void Settings::override() { break; } } + if (!flagIsDefault(GPU_ENABLE_COOP_GROUPS)) { + enableCoopGroups_ = GPU_ENABLE_COOP_GROUPS; + enableCoopMultiDeviceGroups_ = GPU_ENABLE_COOP_GROUPS; + } } - } // namespace roc #endif // WITHOUT_GPU_BACKEND