From 223eb3e3fcceefc10259db93ba4db36e25d4d9ce Mon Sep 17 00:00:00 2001 From: Kamil Kopryk Date: Wed, 24 May 2023 15:08:32 +0000 Subject: [PATCH] Revert "refactor: move getProductMaxPreferredSlmSize to release helper" This reverts commit 944c33237146234d9edd0221faaf45fe66e3e65d. Signed-off-by: Kamil Kopryk --- shared/source/os_interface/product_helper.h | 1 + shared/source/os_interface/product_helper.inl | 5 ++++- .../source/os_interface/product_helper_hw.h | 1 + shared/source/release_helper/release_helper.h | 2 -- .../release_helper/release_helper_1270.cpp | 11 ---------- .../release_helper/release_helper_1271.cpp | 10 --------- .../release_helper/release_helper_base.inl | 4 ---- .../command_encoder_xe_hpg_core.cpp | 8 ++----- .../mtl/os_agnostic_product_helper_mtl.inl | 10 +++++++++ .../mtl/product_helper_tests_mtl.cpp | 21 +++++++------------ 10 files changed, 26 insertions(+), 47 deletions(-) diff --git a/shared/source/os_interface/product_helper.h b/shared/source/os_interface/product_helper.h index 8f142a960d..70dfe39b38 100644 --- a/shared/source/os_interface/product_helper.h +++ b/shared/source/os_interface/product_helper.h @@ -102,6 +102,7 @@ class ProductHelper { virtual bool allowCompression(const HardwareInfo &hwInfo) const = 0; virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0; virtual bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const = 0; + virtual int getProductMaxPreferredSlmSize(const HardwareInfo &hwInfo, int preferredEnumValue) const = 0; virtual bool isNewResidencyModelSupported() const = 0; virtual bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const = 0; virtual std::pair isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const = 0; diff --git a/shared/source/os_interface/product_helper.inl b/shared/source/os_interface/product_helper.inl index cecac00ba6..3bdbcce4f7 100644 --- a/shared/source/os_interface/product_helper.inl +++ b/shared/source/os_interface/product_helper.inl @@ -284,7 +284,10 @@ template bool ProductHelperHw::isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const { return false; } - +template +int ProductHelperHw::getProductMaxPreferredSlmSize(const HardwareInfo &hwInfo, int preferredEnumValue) const { + return preferredEnumValue; +} template bool ProductHelperHw::isAssignEngineRoundRobinSupported() const { return false; diff --git a/shared/source/os_interface/product_helper_hw.h b/shared/source/os_interface/product_helper_hw.h index 9739d3834e..e39bdfa74f 100644 --- a/shared/source/os_interface/product_helper_hw.h +++ b/shared/source/os_interface/product_helper_hw.h @@ -55,6 +55,7 @@ class ProductHelperHw : public ProductHelper { bool allowCompression(const HardwareInfo &hwInfo) const override; LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override; bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const override; + int getProductMaxPreferredSlmSize(const HardwareInfo &hwInfo, int preferredEnumValue) const override; bool isNewResidencyModelSupported() const override; bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const override; std::pair isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const override; diff --git a/shared/source/release_helper/release_helper.h b/shared/source/release_helper/release_helper.h index 54a311b296..dd7dffefc8 100644 --- a/shared/source/release_helper/release_helper.h +++ b/shared/source/release_helper/release_helper.h @@ -28,7 +28,6 @@ class ReleaseHelper { virtual bool isMatrixMultiplyAccumulateSupported() const = 0; virtual bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const = 0; virtual bool isPrefetchDisablingRequired() const = 0; - virtual int getProductMaxPreferredSlmSize(int preferredEnumValue) const = 0; protected: ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {} @@ -46,7 +45,6 @@ class ReleaseHelperHw : public ReleaseHelper { bool isMatrixMultiplyAccumulateSupported() const override; bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const override; bool isPrefetchDisablingRequired() const override; - int getProductMaxPreferredSlmSize(int preferredEnumValue) const override; private: ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {} diff --git a/shared/source/release_helper/release_helper_1270.cpp b/shared/source/release_helper/release_helper_1270.cpp index d717da31c2..5d29a58194 100644 --- a/shared/source/release_helper/release_helper_1270.cpp +++ b/shared/source/release_helper/release_helper_1270.cpp @@ -7,7 +7,6 @@ #include "shared/source/release_helper/release_helper.h" #include "shared/source/release_helper/release_helper_base.inl" -#include "shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h" #include "platforms.h" #include "release_definitions.h" @@ -20,16 +19,6 @@ bool ReleaseHelperHw::isPipeControlPriorToNonPipelinedStateCommandsWARe return hardwareIpVersion.value == AOT::MTL_M_A0; } -template <> -int ReleaseHelperHw::getProductMaxPreferredSlmSize(int preferredEnumValue) const { - using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; - - if (hardwareIpVersion.value == AOT::MTL_M_A0) { - return static_cast(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K); - } - return preferredEnumValue; -} - } // namespace NEO #include "shared/source/release_helper/release_helper_common_xe_lpg.inl" diff --git a/shared/source/release_helper/release_helper_1271.cpp b/shared/source/release_helper/release_helper_1271.cpp index dcd6af0944..5cf5721463 100644 --- a/shared/source/release_helper/release_helper_1271.cpp +++ b/shared/source/release_helper/release_helper_1271.cpp @@ -7,7 +7,6 @@ #include "shared/source/release_helper/release_helper.h" #include "shared/source/release_helper/release_helper_base.inl" -#include "shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h" #include "platforms.h" #include "release_definitions.h" @@ -19,15 +18,6 @@ template <> bool ReleaseHelperHw::isPipeControlPriorToNonPipelinedStateCommandsWARequired() const { return hardwareIpVersion.value == AOT::MTL_P_A0; } -template <> -int ReleaseHelperHw::getProductMaxPreferredSlmSize(int preferredEnumValue) const { - using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; - - if (hardwareIpVersion.value == AOT::MTL_P_A0) { - return static_cast(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K); - } - return preferredEnumValue; -} } // namespace NEO diff --git a/shared/source/release_helper/release_helper_base.inl b/shared/source/release_helper/release_helper_base.inl index de8c741d7e..51b2019d15 100644 --- a/shared/source/release_helper/release_helper_base.inl +++ b/shared/source/release_helper/release_helper_base.inl @@ -27,9 +27,5 @@ template bool ReleaseHelperHw::isPrefetchDisablingRequired() const { return false; } -template -int ReleaseHelperHw::getProductMaxPreferredSlmSize(int preferredEnumValue) const { - return preferredEnumValue; -} } // namespace NEO diff --git a/shared/source/xe_hpg_core/command_encoder_xe_hpg_core.cpp b/shared/source/xe_hpg_core/command_encoder_xe_hpg_core.cpp index f42c16549c..bc4b7bcbfc 100644 --- a/shared/source/xe_hpg_core/command_encoder_xe_hpg_core.cpp +++ b/shared/source/xe_hpg_core/command_encoder_xe_hpg_core.cpp @@ -67,18 +67,14 @@ void EncodeDispatchKernel::appendAdditionalIDDFields(INTERFACE_DESCRIPTO }}; auto programmableIdPreferredSlmSize = PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_128K; - auto *releaseHelper = rootDeviceEnvironment.getReleaseHelper(); - programmableIdPreferredSlmSize = static_cast( - releaseHelper->getProductMaxPreferredSlmSize(programmableIdPreferredSlmSize)); - + auto &productHelper = rootDeviceEnvironment.getHelper(); + programmableIdPreferredSlmSize = static_cast(productHelper.getProductMaxPreferredSlmSize(hwInfo, programmableIdPreferredSlmSize)); for (auto &range : ranges) { if (slmSize <= range.upperLimit) { programmableIdPreferredSlmSize = range.valueToProgram; break; } } - auto &productHelper = rootDeviceEnvironment.getHelper(); - if (productHelper.isAllocationSizeAdjustmentRequired(hwInfo)) { pInterfaceDescriptor->setPreferredSlmAllocationSize(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_128K); } else { diff --git a/shared/source/xe_hpg_core/mtl/os_agnostic_product_helper_mtl.inl b/shared/source/xe_hpg_core/mtl/os_agnostic_product_helper_mtl.inl index ef724b5ad3..0af8359eb9 100644 --- a/shared/source/xe_hpg_core/mtl/os_agnostic_product_helper_mtl.inl +++ b/shared/source/xe_hpg_core/mtl/os_agnostic_product_helper_mtl.inl @@ -92,6 +92,16 @@ uint64_t ProductHelperHw::overridePatIndex(AllocationType allocation return patIndex; } +template <> +int ProductHelperHw::getProductMaxPreferredSlmSize(const HardwareInfo &hwInfo, int preferredEnumValue) const { + using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; + if (getProductConfigFromHwInfo(hwInfo) == AOT::MTL_M_A0 || getProductConfigFromHwInfo(hwInfo) == AOT::MTL_P_A0) { + return static_cast(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K); + } else { + return preferredEnumValue; + } +} + template <> bool ProductHelperHw::isDummyBlitWaRequired() const { return true; diff --git a/shared/test/unit_test/xe_hpg_core/mtl/product_helper_tests_mtl.cpp b/shared/test/unit_test/xe_hpg_core/mtl/product_helper_tests_mtl.cpp index e4512868b8..76e2f3e1ea 100644 --- a/shared/test/unit_test/xe_hpg_core/mtl/product_helper_tests_mtl.cpp +++ b/shared/test/unit_test/xe_hpg_core/mtl/product_helper_tests_mtl.cpp @@ -11,7 +11,6 @@ #include "shared/source/helpers/compiler_product_helper.h" #include "shared/source/memory_manager/allocation_type.h" #include "shared/source/os_interface/product_helper.h" -#include "shared/source/release_helper/release_helper.h" #include "shared/source/xe_hpg_core/hw_cmds_mtl.h" #include "shared/test/common/fixtures/device_fixture.h" #include "shared/test/common/helpers/default_hw_info.h" @@ -213,7 +212,7 @@ MTLTEST_F(MtlProductHelper, givenMtlLpgWhenIsBFloat16ConversionSupportedIsCalled EXPECT_FALSE(compilerProductHelper.isBFloat16ConversionSupported(hwInfo)); } -MTLTEST_F(MtlProductHelper, givenMtlMA0WhenGetProductMaxPreferredSlmSizeThen96KbValueReturned) { +MTLTEST_F(MtlProductHelper, givenMtlMA0WhengetProductMaxPreferredSlmSizeThen96KbValueReturned) { using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; PREFERRED_SLM_ALLOCATION_SIZE preferredEnumValue = PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K; auto hwInfo = *defaultHwInfo.get(); @@ -221,12 +220,11 @@ MTLTEST_F(MtlProductHelper, givenMtlMA0WhenGetProductMaxPreferredSlmSizeThen96Kb aotConfig.value = AOT::MTL_M_A0; auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper(); compilerProductHelper.setProductConfigForHwInfo(hwInfo, aotConfig); - refreshReleaseHelper(&hwInfo); - preferredEnumValue = static_cast(releaseHelper->getProductMaxPreferredSlmSize(preferredEnumValue)); + preferredEnumValue = static_cast(productHelper->getProductMaxPreferredSlmSize(hwInfo, preferredEnumValue)); EXPECT_EQ(preferredEnumValue, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K); } -MTLTEST_F(MtlProductHelper, givenMtlPA0WhenGetProductMaxPreferredSlmSizeThen96KbValueReturned) { +MTLTEST_F(MtlProductHelper, givenMtlPA0WhengetProductMaxPreferredSlmSizeThen96KbValueReturned) { using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; PREFERRED_SLM_ALLOCATION_SIZE preferredEnumValue = PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K; auto hwInfo = *defaultHwInfo.get(); @@ -234,11 +232,10 @@ MTLTEST_F(MtlProductHelper, givenMtlPA0WhenGetProductMaxPreferredSlmSizeThen96Kb aotConfig.value = AOT::MTL_P_A0; auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper(); compilerProductHelper.setProductConfigForHwInfo(hwInfo, aotConfig); - refreshReleaseHelper(&hwInfo); - preferredEnumValue = static_cast(releaseHelper->getProductMaxPreferredSlmSize(preferredEnumValue)); + preferredEnumValue = static_cast(productHelper->getProductMaxPreferredSlmSize(hwInfo, preferredEnumValue)); EXPECT_EQ(preferredEnumValue, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K); } -MTLTEST_F(MtlProductHelper, givenMtlMB0WhenGetProductMaxPreferredSlmSizeThenPassedValueReturned) { +MTLTEST_F(MtlProductHelper, givenMtlMB0WhengetProductMaxPreferredSlmSizeThenPassedValueReturned) { using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; PREFERRED_SLM_ALLOCATION_SIZE preferredEnumValue = PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K; auto hwInfo = *defaultHwInfo.get(); @@ -246,12 +243,11 @@ MTLTEST_F(MtlProductHelper, givenMtlMB0WhenGetProductMaxPreferredSlmSizeThenPass aotConfig.value = AOT::MTL_M_B0; auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper(); compilerProductHelper.setProductConfigForHwInfo(hwInfo, aotConfig); - refreshReleaseHelper(&hwInfo); - preferredEnumValue = static_cast(releaseHelper->getProductMaxPreferredSlmSize(preferredEnumValue)); + preferredEnumValue = static_cast(productHelper->getProductMaxPreferredSlmSize(hwInfo, preferredEnumValue)); EXPECT_EQ(preferredEnumValue, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K); } -MTLTEST_F(MtlProductHelper, givenMtlPB0WhenGetProductMaxPreferredSlmSizeThenPassedValueReturned) { +MTLTEST_F(MtlProductHelper, givenMtlPB0WhengetProductMaxPreferredSlmSizeThenPassedValueReturned) { using PREFERRED_SLM_ALLOCATION_SIZE = typename XeHpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE; PREFERRED_SLM_ALLOCATION_SIZE preferredEnumValue = PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K; auto hwInfo = *defaultHwInfo.get(); @@ -259,8 +255,7 @@ MTLTEST_F(MtlProductHelper, givenMtlPB0WhenGetProductMaxPreferredSlmSizeThenPass aotConfig.value = AOT::MTL_P_B0; auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper(); compilerProductHelper.setProductConfigForHwInfo(hwInfo, aotConfig); - refreshReleaseHelper(&hwInfo); - preferredEnumValue = static_cast(releaseHelper->getProductMaxPreferredSlmSize(preferredEnumValue)); + preferredEnumValue = static_cast(productHelper->getProductMaxPreferredSlmSize(hwInfo, preferredEnumValue)); EXPECT_EQ(preferredEnumValue, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_0K); }